使用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
,如果我们想要存根它。)
答案 0 :(得分:0)
该行为旨在且无法更改。请看以下帖子,了解它是如何被绕开的:
rspec 2: detect call to method but still have it perform its function