设定期望而不嘲笑任何东西

时间:2012-05-08 16:18:02

标签: ruby-on-rails stub mocha expectations

使用MiniTest :: Spec和Mocha:

 describe "#devices" do
   it "scopes the devices by the provided :ip_list" do
     ips = 'fast tests ftw!'
     ds = DeviceSearch.new ip_list: ips
     Device.expects(:scope_by_ip_list).once.with(ips)
     ds.devices
   end
 end

当我使代码正常工作时,此测试将失败,因为调用Device.expects(:scope_by_ip_list)存根 Device.scope_by_ip_list,因为我没有指定{{1}或者某些这样的,它用.returns(Devices.scoped)来存根方法。因此,在我的代码中,正确范围设备列表然后进行进一步操作,进一步的操作就会爆炸。

我不希望想要指定一个nil参数,因为我完全不关心它返回什么。我根本不想存根这个方法!我只是想对它做出一个期望,让它保持原样。

有办法吗?

(对我而言,说.returns之类的内容似乎很尴尬 - 当我说Device.expects(:foo).returns('bar') 期望 Model时,我存根说那个方法!我们可以说method,如果我们想要存根它。)

1 个答案:

答案 0 :(得分:0)

该行为旨在且无法更改。请看以下帖子,了解它是如何被绕开的:

rspec 2: detect call to method but still have it perform its function