gpt4 book ai didi

ruby-on-rails - 设定一个期望而不 mock 任何东西

转载 作者:行者123 更新时间:2023-12-05 08:02:03 24 4
gpt4 key购买 nike

使用 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,并且因为我没有指定 .returns(Devices.scoped) 或类似的东西,所以它用 nil stub 了该方法。因此,在我的代码中,它正确地确定了设备列表的范围,然后进行了进一步的操作,进一步的操作失败了。

不过,我不希望必须指定一个.returns 参数,因为我完全不关心它返回什么。我根本不想 stub 这个方法!我只是想对它建立一个期望,并让它按原样运行。

有办法吗?

(对我来说,说Device.expects(:foo).returns('bar')之类的话似乎很尴尬——当我说Model < strong>expects method,我不是stub那个方法!我们可以说Device.stubs( :foo),如果我们想 stub 的话。)

最佳答案

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

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

关于ruby-on-rails - 设定一个期望而不 mock 任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10502421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com