阻止期望后调用原始实现

时间:2015-12-14 11:51:30

标签: ruby rspec

是否有可能从块匹配器调用原始实现?

expect(object).to receive(:method) do |argument|
  expect(argument).to eql expected_value

  somehow_call_original_implementation_of_the_method
end

当我使用and_call_original时,它忽略了对块内参数的期望,只需检查收到的方法:

expect(object).to receive(:method) do |argument|
  expect(argument).to eql expected_value
end.and_call_original

1 个答案:

答案 0 :(得分:1)

为什么要用块来呼叫expect_to_receive?我认为这是为allow_to_receive保留的,其中块用作方法的实现。

在你的情况下,我认为你可以把它改成这样的东西:

expect(argument).to eql(expected_argument_value)
expect(object).to receive(:method).and_return(expected_value)
object.method