我如何在 Rspec 之外使用 rspec 期望值和匹配器?
How can I use rspec expectations and matchers outside of Rspec?
我有一个脚本已经发展到需要做一些断言和匹配。
它是写在ruby中的,我已经在Gemfile中包含了rspec
并且需要它。
我发现这对 post 如何在 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
行遇到错误。
当您 include
一个模块时,它会使其方法可供 class 的 实例 使用。您的 test
方法是单例方法("class method"),而不是实例方法,因此永远无法访问混合模块提供的方法。要修复它,您可以这样做:
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
我有一个脚本已经发展到需要做一些断言和匹配。
它是写在ruby中的,我已经在Gemfile中包含了rspec
并且需要它。
我发现这对 post 如何在 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
行遇到错误。
当您 include
一个模块时,它会使其方法可供 class 的 实例 使用。您的 test
方法是单例方法("class method"),而不是实例方法,因此永远无法访问混合模块提供的方法。要修复它,您可以这样做:
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