ruby-on-rails – 用于RSpec的未定义方法instance_double :: Mocks :: ExampleMethods

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 用于RSpec的未定义方法instance_double :: Mocks :: ExampleMethods前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个这样的测试用例:
describe WorkCardsController do
    it "something" do
        work_card = instance_double(WorkCard,{:started?=>true} )
        #some more code
    end
end

当我运行RSpec时,我收到一个错误

undefined method 'instance_double' for #<Rspec::Core::ExampleGroup::Nested_1::Nested_8::Nested_3:0x007f0788b98778>

根据http://rubydoc.info/github/rspec/rspec-mocks/RSpec/Mocks/ExampleMethods,存在这种方法.所以我尝试通过以下方式直接访问它:

describe WorkCardsController do
    it "something" do
        work_card = RSpec::Mocks::ExampleMethods::instance_double(WorkCard,{:started?=>true} )
        #some more code
    end
end

然后我得到了一个非常令人惊讶的错误

undefined method 'instance_double' for Rspec::Mocks::ExampleMEthods:Module

这与我上面链接的文档相反.

我错过了什么?

解决方法

从您指出的文档:

Mix this in to your test context (such as a test framework base class) to use rspec-mocks with your test framework.

尝试将其包含在您的代码中:

include RSpec::Mocks::ExampleMethods

你的直接接近失败,因为打电话

RSpec::Mocks::ExampleMethods::instance_double(...)

期望该方法被声明为类方法

def self.instance_double(...)

但它已被声明为实例方法

def instance_double(...)

猜你在找的Ruby相关文章