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

时间:2015-09-15 19:15:19

标签: ruby rspec rspec-expectations

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

它是用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行收到错误。

1 个答案:

答案 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