如何在rspec中仅针对某些方法调用引发异常

时间:2016-09-13 15:27:29

标签: ruby rspec

我有一些代码在启动时调用方法collect_money。定期调用方法collect_money异步调用(基于事件等)。我想让collect_money引发一个异常,例如NoMoney偶尔,但不是每一次,绝对不是第一次被执行。这可能吗?如果没有,那么可以采用哪种替代/推荐的方式来解决这个问题?

1 个答案:

答案 0 :(得分:0)

进行确定性测试是个好主意,以便测试通过或始终一致地失败。

您可以存根此方法并使用内部计数器:

#assuming that obj has the method collect_money
allow(obj).to receive(:collect_money) do
  @counter ||= 0
  @counter += 1
  fail NoMoney if counter > 3 # raise exception in 4th call
  # ... return something useful in other cases
end