Jac*_*cek 8 ruby unit-testing rspec ruby-on-rails rspec-mocks
我有一个这样的测试用例:
describe WorkCardsController do
it "something" do
work_card = instance_double(WorkCard, {:started?=>true} )
#some more code
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行RSpec时,我收到一个错误:
undefined method 'instance_double' for #<Rspec::Core::ExampleGroup::Nested_1::Nested_8::Nested_3:0x007f0788b98778>
Run Code Online (Sandbox Code Playgroud)
根据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
Run Code Online (Sandbox Code Playgroud)
然后我得到了一个非常令人惊讶的错误:
undefined method 'instance_double' for Rspec::Mocks::ExampleMEthods:Module
Run Code Online (Sandbox Code Playgroud)
这与我上面链接的文档相反.
我错过了什么?
从您指出的文档中:
将其混合到您的测试上下文(例如测试框架基类)中,以将 rspec-mocks 与您的测试框架一起使用。
尝试将include其添加到您的代码中:
include RSpec::Mocks::ExampleMethods
Run Code Online (Sandbox Code Playgroud)
您的直接方法失败了,因为调用
RSpec::Mocks::ExampleMethods::instance_double(...)
Run Code Online (Sandbox Code Playgroud)
期望该方法被声明为类方法:
def self.instance_double(...)
Run Code Online (Sandbox Code Playgroud)
但它已被声明为实例方法:
def instance_double(...)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2092 次 |
| 最近记录: |