2013-10-08 74 views
0

我有一個before_validation回調模型「聲明」,它將新聲明的狀態設置爲「打開」。這工作正常,但在我的規範中,我想快速測試幾個州。所以,我創建了一個聲明是這樣的:在測試中忽略before_validation回調

let!(:declaration) { create(:declaration, status: "approved", user: employee) } 

不幸的是,before_validation狀態設置爲「打開」,每次。 在我的測試中處理這個問題的最佳方法是什麼?

我當然可以做整個流程,所以聲明進入正確的狀態(這是一個功能規格),但這需要很多時間,因爲它很慢。這部分測試的目的是快速檢查一堆不同的狀態。有什麼建議麼?

+0

爲什麼你甚至在你的規格中創建對象? – apneadiving

+0

嗯,你有這方面的更多信息?聽起來不錯。 – John

+0

'build','build_stubbed'通常足夠用於模型規格 – apneadiving

回答

0

我建議你在驗證之前修改你的。

聽起來像你實際上是這樣:

self.status = "open" 

也許你應該做的

self.status ||= "open" 

因此,它將設置狀態打開每個新的創造,但只有當一個狀態不指定。

+0

輝煌!它不僅使我的測試工作,對我的應用程序以及我的想法都是一個更好的解決方案。謝謝! – John