8

我有一个脚本已经演变成需要做一些断言和匹配。

它是用 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

我在线路上遇到错误expect

4

1 回答 1

10

当你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
于 2015-09-15T19:32:12.717 回答