rspec至少使用一次,条件不符合我的预期

rspec至少使用一次,条件不符合我的预期,rspec,Rspec,有没有一种方法可以测试,如果一个方法在其他时间被另一个参数调用,那么该方法是否至少会被参数匹配器调用一次。下面是一个例子: class A def test(a) puts "AAA" end end it "should work" do a = A.new expect(a).to receive(:test).with(1).at_least(:once) a.test 2 a.test 1 a.test 3 end 我只是担心使用某个参数至少调用一

有没有一种方法可以测试,如果一个方法在其他时间被另一个参数调用,那么该方法是否至少会被参数匹配器调用一次。下面是一个例子:

class A
  def test(a)
    puts "AAA"
  end
end

it "should work" do
  a = A.new
  expect(a).to receive(:test).with(1).at_least(:once)
  a.test 2
  a.test 1
  a.test 3
end
我只是担心使用某个参数至少调用一次test,但在第一次使用不匹配的参数调用该test时,我得到了一个预期失败

更新 我想做的一个更好的例子是比这更复杂一点…我想对参数进行自定义匹配…更像

it "should work" do
  a = A.new
  expect(a).to receive(:test).at_least(:once).with(an_instance_of(Fixnum)) do |i|
    expect(i).to be > 2
  end
  a.test 2
  a.test 1
  a.test 3
end

当我在过去使用mocha时,您可以将一个块传递给with方法来评估参数。如果块返回false,则参数预期失败。rspec似乎只允许您使用返回块检查参数(当您使用和_调用_original时,它会被忽略)。

我认为您需要使用
作为_null _object
来基本忽略带有其他参数的调用

更改行:

a = A.new
致:


这确实有效,但会导致对象变成完整的模拟对象。这意味着我不能再使用和调用它的原始。另外,文档说它只能在启用了should语法的情况下工作。还有一件事,如果我想对传入的参数使用更复杂的期望值,那么这不起作用……请参阅我对原始帖子的更新。
a = A.new.as_null_object