0
我有一些代碼在啓動時調用方法collect_money
。定期地,方法collect_money
被異步調用(基於事件等)。我想讓collect_money偶爾發起例外情況,例如NoMoney
,但不是每一次,絕對不是第一次執行。這可能嗎?如果不是,將採取什麼替代/推薦的方式來解決這個問題?如何在rspec中爲某些方法調用引發異常
我有一些代碼在啓動時調用方法collect_money
。定期地,方法collect_money
被異步調用(基於事件等)。我想讓collect_money偶爾發起例外情況,例如NoMoney
,但不是每一次,絕對不是第一次執行。這可能嗎?如果不是,將採取什麼替代/推薦的方式來解決這個問題?如何在rspec中爲某些方法調用引發異常
確定性測試是一個好主意,以便測試通過或始終失敗。
您可以存根這種方法,並使用內部計數器:
#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