我有一个脚本,它已经发展成需要做一些断言和匹配。
它是用ruby编写的,我在Gemfile中包含了rspec
并且需要它。
我发现这篇关于如何在irb
中使用的非常有用的帖子:
How to use RSpec expectations in irb
我还发现了以下内容:
Use RSpec's "expect" etc. outside a describe ... it block
class BF
include ::Rspec::Matchers
def self.test
expect(1).to eq(1)
end
end
BF.test
我在expect
行收到错误。
答案 0 :(得分:5)
当你include
一个模块时,它会使其方法可用于该类的实例。您的test
方法是单例方法(“类方法”),而不是实例方法,因此永远不能访问由混合模块提供的方法。要修复它,你可以这样做:
class BF
include ::RSpec::Matchers
def test
expect(1).to eq(1)
end
end
BF.new.test
如果您希望RSpec::Matchers
方法可用于BF
的单例方法,则可以改为extend
模块:
class BF
extend ::RSpec::Matchers
def self.test
expect(1).to eq(1)
end
end
BF.test