gpt4 book ai didi

ruby-on-rails - Rspec 在 any_instance 上模拟(n)次

转载 作者:行者123 更新时间:2023-12-04 00:42:30 25 4
gpt4 key购买 nike

我想在 rspec 测试中使用 Mocks。

klass.any_instance.should_receive(:save).exactly(2).times.and_return(true)

但我收到一条错误消息,如:

'消息“保存”已由 <#Object> 接收,但已由 <#Object> 接收'

临时我使用 stub ,但为了准确起见,我想使用模拟

最佳答案

documentationany_instance.should_receive是:

Use any_instance.should_receive to set an expectation that one (and only one)
instance of a class receives a message before the example is completed.

所以你已经指定只有一个对象应该接收 save调用两次,而不是 2 个对象应该收到 save叫一次。

如果你想计算不同实例完成的调用,你必须是 creative像:
save_count = 0
klass.any_instance.stub(:save) { save_count+=1 }
# run test
save_count.should == 2

关于ruby-on-rails - Rspec 在 any_instance 上模拟(n)次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14373250/

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