如何在Rspec之外使用rspec期望和匹配器?

Tim*_* T. 6 ruby rspec rspec-expectations

我有一个脚本,它已经发展成需要做一些断言和匹配.

它是用ruby编写的,我已经包含rspec在Gemfile中并且需要它.

我发现这个非常有用的SO帖子如何使用irb:

如何在irb中使用RSpec期望值

我还发现了以下内容:

在描述...阻止之外使用RSpec的"期望"等

class BF
   include ::Rspec::Matchers

   def self.test
     expect(1).to eq(1)
   end
end

BF.test
Run Code Online (Sandbox Code Playgroud)

我在线上得到一个错误expect.

Myr*_*ton 7

当您include使用模块时,它会使其方法可用于该类的实例.您的test方法是单例方法("类方法"),而不是实例方法,因此永远不能访问由混合模块提供的方法.要修复它,您可以:

class BF
   include ::RSpec::Matchers

   def test
     expect(1).to eq(1)
   end
end

BF.new.test
Run Code Online (Sandbox Code Playgroud)

如果您希望RSpec::Matchers方法可用于单例方法BF,则可以extend使用模块:

class BF
   extend ::RSpec::Matchers

   def self.test
     expect(1).to eq(1)
   end
end

BF.test
Run Code Online (Sandbox Code Playgroud)