2015-04-05 72 views
1

我有一個非常大的Rails代碼庫,並且我們使用了很多工廠(FactoryGirl)。問題是,工廠女孩的一個實例創建一個數據庫事務,所以當我們運行整個測試套件時,需要很長時間。但是,如果我們正確地使用了Rspec mocks,那麼測試將會閃電般快速運行,因爲嘲笑是輕微的 - 無需數據庫事務處理。什麼時候寫模擬對象vs工廠(FactoryGirl)

我的問題:你什麼時候模擬角色,實體或對象,什麼時候使用對象的有效實例?如果有人能提供一個例子,那會很棒。

回答

1

我已經學會了分解何時在測試中使用FactoryGirl或活動記錄實例。它們應該用於模型測試和控制器測試。

模型測試 - 必須與數據庫集成。如果您正在創建與用戶實例交互的用戶測試,那麼您將需要用戶工廠。但是,如果您與其他模型(不是用戶模型)合作,那麼我會爲這些合作者創建雙打和存根方法。

人們也可以使用控制器測試工廠慷慨。主要是因爲控制器是後端生態系統的外部層。爲了測試它,你將需要集成很多Rails和你的模型的一部分。我發現可以在這裏使用工廠。

對於應用程序邏輯 - 服務,域,策略,普通的舊ruby對象 - 應該單獨測試每個域。對於被測試的單元或對象,可以隨意初始化它,但爲其協作者創建雙打,嘲笑和存根。

相關問題