2017-12-27 476 views
0

我正在發現與測試流相關的Rails集成測試,並且我有一些關於使用集成測試替換控制器測試(在rails 5中不推薦使用)的行業標準的問題。替代rails集成測試的控制器測試應該始終堅持db?

通常我們有微小的控制器,我們可以獲取參數,調用正確的協作者並準備響應,並且很容易通過直接在控制器對象上嘲諷協作者來測試它。

我很擔心將每個控制器測試遷移到集成測試的開銷,而持久化db。這種情況的標準是什麼?

只測試一條路線/動作而不是完整流程時的標準是什麼?

我們怎麼能代替這個?:

@controller.stubs(:authenticate).returns(true) 

回答

0

集成測試旨在模仿真實用戶。他們打算全面測試整個應用程序。

意見因此而異。對我而言,這意味着你應該完全避免嘲弄/嘲笑。沒有一件事情被嘲諷或嘲笑,一切都完全執行。這意味着我編寫的每個集成測試都要通過輸入用戶名和密碼的實際身份驗證過程。有些步驟是多餘的,是的。

集成測試比單元/控制器測試更慢。切斷驗證步驟可能不會爲您節省足夠的時間從長遠來看有所作爲(無雙關語意圖)。

+0

感謝您的回答!同意一切。在將控制器測試遷移到集成測試時(如Rails 5中所建議的),身份驗證和存儲用戶不會產生差異,但將每個模型存儲在db中會帶來很多開銷。你做了一個軌道集成測試,爲每個控制器動作存儲所有的數據庫? – Jorge

+0

@Jorge我使用燈具/工廠來創建我所需要的當前測試。 –