我想使用rspec来模拟一个flakey服务处理。
为此,我想让服务调用引发异常几次,并在这些时间之后返回实际值。
这是否可以使用rspec?
我试过
allow(Service).to receive(:run).once.and_raise(MyError)
allow(Service).to receive(:run).once.and_return(response)
但是在第一次运行时它返回响应而不是错误
答案 0 :(得分:0)
您可以使用block implementation来完成此操作。
call_count = 0
allow(Service).to receive(:run) do
call_count += 1
call_count < 3 ? raise(MyError) : response
end