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