【发布时间】:2016-01-12 12:50:01
【问题描述】:
我想使用 rspec 来模拟 flakey 服务处理。
为此,我想让服务调用引发几次异常,然后在这些时间之后返回实际值。
rspec 可以做到这一点吗?
我试过了
allow(Service).to receive(:run).once.and_raise(MyError)
allow(Service).to receive(:run).once.and_return(response)
但在第一次运行时它返回响应而不是错误
【问题讨论】:
-
这是一个非常酷的测试!不幸的是,我认为在 rspec 中很难做到,所以也许你可以把它分成两个测试。一是检查失败后的重试行为,二是检查有效的响应行为?
-
我这样做了,但我想检查我使用的重试块是否确实有效,因此在捕获一些异常后,它会按应有的方式执行并返回实际值。
标签: ruby-on-rails ruby-on-rails-4 rspec