2016-10-03 53 views
6

文檔中的Jest狀態: 「Jest虛擬化JavaScript環境並跨工作進程並行運行測試。」一個文件裏面的測試是否在Jest中並行運行?

但是怎麼樣在一個文件內進行多個測試,它們是並行運行還是隻適用於測試文件?我可以假設一個文件中的測試按照外觀和序列順序運行嗎?

回答

8

是的,您可以安全地假設單個文件中的測試將按照外觀順序運行。你可以通過在每個it塊中加入console.log來證明這一點。

可能值得一提的是,依賴執行順序/外部狀態通常是不好的做法......並且你永遠不知道,Jest(或者當前的基礎測試運行者Jasmine)可能決定以隨機方式運行它們訂購新版本。

+0

即使現在,如果您依賴執行順序,使用'only'和'skip'可能會變得很麻煩。 – Shawn

+1

問題是,在beforeEach和afterEach在各種情況下,當測試是'async'函數時,'beforeEach'和'afterEach'將是無用的,因爲如果Jest要並行運行'async'測試,那麼不再可能重置狀態或每次測試後清理,這將使測試非常容易出現錯誤。 'beforeEach'和'afterEach'用於在測試之間建立或清理,爲了使其具有意義,測試需要串行執行,而不是並行執行。對於Jest(或任何跑步者)來說,並行運行「異步」功能測試將會是一個糟糕的API設計...... – trusktr

+0

@trusktr'beforeEach'' it'和'afterEach'等顯然需要串行運行,但是如果這證明效率更高,每個人都可以並行運行。 – riscarrott