2016-09-13 67 views
0

我有一些代碼在啓動時調用方法collect_money。定期地,方法collect_money被異步調用(基於事件等)。我想讓collect_money偶爾發起例外情況,例如NoMoney,但不是每一次,絕對不是第一次執行。這可能嗎?如果不是,將採取什麼替代/推薦的方式來解決這個問題?如何在rspec中爲某些方法調用引發異常

回答

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 
相關問題