2

使用 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)还调用了stubs Device.scope_by_ip_list,并且由于我没有指定 a.returns(Devices.scoped)或类似的东西,它使用nil. 因此,在我的代码中,它正确地定义了一个设备列表,然后进行了进一步的操作,进一步的操作就会崩溃。

不过,我不想指定参数,因为我完全不在乎它返回什么.returns我根本不想存根该方法!我只是想对它设定一个期望,让它按原样运行。

有没有办法做到这一点?

(对我来说,说这样的话似乎很尴尬Device.expects(:foo).returns('bar')——当我说Model 期望 method时,我并不是说要存根该方法!我们可以说Device.stubs(:foo),如果我们想存根它。)

4

1 回答 1

0

该行为是有意的,无法更改。查看以下帖子,了解如何绕过它:

rspec 2:检测对方法的调用,但仍然让它执行其功能

于 2012-05-08T16:43:08.130 回答