gpt4 book ai didi

ruby-on-rails - 在 RSpec 中,如何以任意顺序期望具有不同参数的多条消息?

转载 作者:数据小太阳 更新时间:2023-10-29 07:12:39 24 4
gpt4 key购买 nike

RSpec 似乎按顺序匹配方法接收的消息。我不确定如何使以下代码工作:

allow(a).to receive(:f)
expect(a).to receive(:f).with(2)
a.f(1)
a.f(2)
a.f(3)

我问的原因是 a.f 的一些调用是由我的代码的上层控制的,所以我不能对这些方法调用添加期望。

最佳答案

RSpec spy 是测试这种情况的一种方式。要监视一个方法,用 allow stub ,除了方法名称之外没有任何约束,调用该方法,然后 expect 确切的方法调用。

例如:

allow(a).to receive(:f)
a.f(2)
a.f(1)
a.f(3)
expect(a).to have_received(:f).exactly(3).times
[1, 2, 3].each do |arg|
expect(a).to have_received(:f).with(arg)
end

如您所见,这种预期方法调用的方式不会强加顺序。

关于ruby-on-rails - 在 RSpec 中,如何以任意顺序期望具有不同参数的多条消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37062549/

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