我試圖去掌握在Rails中的測試。如何在所有測試中禁用after_validation方法
在我的一個模型中,我有after_validation :grab_external_stuff
。 grab_external_stuff
是一種調用外部API的方法。我不想在我的測試中運行這個。
什麼是在我的測試中禁用這種after_validation
方法的正確方法?我該怎麼做(使用rspec)?我在哪裏做?
我知道存根可以用來停止被調用的方法。但我很努力地看到如何將它應用於after_validation或類似的鉤子。
例如,假設我有一個屬於某個項目的屬於某個用戶的任務。我運行一個工廠(:任務),它也在創建相關的項目和用戶。但是當用戶被驗證時,grab_external_stuff被調用。
那麼在我的測試中,我應該指定我不想運行此方法?在測試中,在工廠,別的地方?
感謝您的任何建議。
感謝MrDanA,這很有道理。但是如果我想要更細粒度的控制呢?如果我的測試運行Factory(:task),它也會創建相關記錄,那麼我將如何在相關模型中存儲方法? ':grab_external_stuff'是一個類方法。 –
這完全沒有問題!看我的編輯。 – MrDanA
謝謝!我想我正在看着這個錯誤的方向。我試圖動態地傳遞存根,像'Factory(:task,stubs:User.stub(:grab_external_stuff))'(我不知道語法看起來像什麼,但你明白了!)。是否曾經有過這樣的情況?或者這完全是錯誤的軌道? (謝謝,stil試圖抓住測試!!) –