5

隨着Rails 5.1的發佈,它們包含了系統測試。這意味着我們可以在Rails中測試JavaScript。 我看到Rails指南解釋了樣本測試以兩種方式創建文章:通過系統測試和通過集成測試。何時通過集成測試選擇系統測試Rails 5.1?

現在的問題是:在Rails 5.1之前,我正在集成測試中編寫複雜的測試用例。但是現在我有兩個選擇來編寫測試用例。 我可以編寫測試用例像

test: should create article 
在集成測試

,但我也可以寫在系統測試相同的測試情況。

那麼我什麼時候應該選擇系統測試來編寫測試用例以及何時選擇集成測試呢?

+1

集成測試不使用瀏覽器,因此您無法在其中測試js。 – MikDiet

回答

5

簡短的回答是由MikDiet給出的。對於長時間的答案,請查看關於系統和集成測試的documentation

系統測試允許在真實瀏覽器或無頭驅動程序中運行測試,以測試與應用程序的完全用戶交互。

一個快速的經驗法則是所有與Javascript交互的測試都需要作爲系統測試來運行。但您也可以使用它們來測試您的響應式佈局,因爲您可以指定瀏覽器的屏幕大小。

集成測試用於測試應用程序的各個部分如何交互。它們通常用於測試我們應用程序中的重要工作流程。

集成測試不同,因爲它們不通過瀏覽器運行。他們仍然允許您與結果頁面的HTML進行交互,但請記住它是靜態您輸出的輸出。

在集成測試中,您主要關注的是控制器操作的行爲,而不是用戶查看和交互的內容。這部分文檔可能會幫助您瞭解集成測試的全部內容:Functional Tests for Your Controllers

+0

因此,系統測試是功能測試的改進和替代? – Marklar

+1

我不會那麼說。系統測試或多或少Minitest相當於RSpec的功能規格。在高層次上,他們幾乎是一樣的。在一個較低的級別上,系統測試可以更容易設置,現在可能會稍微快一點,因爲它們與Rails緊密集成。但據我所知,RSpec正計劃將系統測試的API用於它們的功能規格,這將使它們完全相同,只是語法不同。 – jdno