clj*_*clj 2 rspec ruby-on-rails
我在 rspec 2.14.1 中有一个代码,例如
allow_any_instance_of(AnyClass).to receive(:some_method).and_call_original
Run Code Online (Sandbox Code Playgroud)
以及相应的消息期望
expect_any_instance_of(AnyClass).to receive(:some_method)
Run Code Online (Sandbox Code Playgroud)
以上在 rspec 2.14.1 中运行良好。升级到rspec 3.1.0后,上述代码不再起作用。它失败了消息期望 some_method 甚至一次也没有被调用
但是如果我像这样改变存根
allow_any_instance_of(AnyClass).to receive(:some_method).and_return(value)
Run Code Online (Sandbox Code Playgroud)
它在 rspec 3.1.0 中工作正常。
我只是想了解为什么在 rspec 升级后将 and_call_original 与 allowed_any_instance_of 一起使用会失败。
我可以从这个链接看到仅支持and_call_original部分双打。
这是否意味着使用allow_any_instance_of不是部分双精度?
and_call_original与 一起使用时确实有效allow_any_instance_of。
请参阅规范,了解如何使用此处的any_instance不同方式进行模拟或取消存根。and_call_original
为了回答我上面的问题,我使用消息期望的方式是错误的。它应该是:
allow_any_instance_of(AnyClass).to(
receive(:any_method).and_call_original
)
expect(AnyClass.new.any_method).to eq(:any_method_value)
Run Code Online (Sandbox Code Playgroud)
我试图使用expect_any_instance_of而不是预期导致了问题。
| 归档时间: |
|
| 查看次数: |
9260 次 |
| 最近记录: |