Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在RSpec中,如何以任意顺序期望具有不同参数的多条消息?_Ruby On Rails_Ruby_Unit Testing_Rspec - Fatal编程技术网

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

Ruby on rails 在RSpec中,如何以任意顺序期望具有不同参数的多条消息?,ruby-on-rails,ruby,unit-testing,rspec,Ruby On Rails,Ruby,Unit Testing,Rspec,RSpec似乎按照顺序匹配方法接收的消息。我不确定如何使以下代码正常工作: allow(a).to receive(:f) expect(a).to receive(:f).with(2) a.f(1) a.f(2) a.f(3) 我询问的原因是,a.f的某些调用由我的代码的上层控制,因此我无法为这些方法调用添加期望值。尝试以下方法: expect(a).to receive(:f).at_most(3).times 你可以找到更多的例子来测试这种情况。若要监视某个方法,请使用allow对其

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

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

我询问的原因是,
a.f
的某些调用由我的代码的上层控制,因此我无法为这些方法调用添加期望值。

尝试以下方法:

expect(a).to receive(:f).at_most(3).times

你可以找到更多的例子来测试这种情况。若要监视某个方法,请使用
allow
对其进行存根,除方法名称外不带任何约束,调用该方法,然后
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

正如您所看到的,这种期望方法调用的方式不会强加命令。

您能澄清您的问题吗?你想通过这个测试完成什么?你能告诉我什么是
a
f
以及它们是如何定义的吗?