2016-10-03 18 views
6

ドキュメント内のJest states: "JestはJavaScript環境を仮想化し、ワーカープロセス間でテストを並行して実行します。Jestでは、1つのファイル内のテストが並行して実行されますか?

しかし、1つのファイル内で複数のテストを実行すると、それらは並行して実行されますか、このステートメントはテストファイルにのみ適用されますか? 1つのファイルのテストが外観順に並んで実行されていると仮定できますか?

答えて

8

はい、1つのファイル内のテストが外観の順番で実行されると想定できます。 console.logを各ブロックitに入れることでこれを証明できます。

実行/外部状態の順序に依存することは一般に悪い習慣であると言えるでしょう。Jest(または現在のテストランナーJasmine)は、それらをランダムに実行することを決定するかもしれません新しいバージョンで注文します。

+0

実行順序に頼っていると、 'only'と' skip'を使っても面倒になることがあります。 – Shawn

+1

問題は、 'beforeEach'と' afterEach'はテストが 'async'関数である場合には役に立たないということです。これはJestが' async'テストを並行して実行すると、それぞれのテストの後にクリーンアップすると、テストにバグが発生しやすくなります。 'beforeEach'と' afterEach'はテスト間のセットアップやクリーンアップに役立ちます。これを意味するためには、テストはパラレルではなく直列で実行する必要があります。 Jest(または任意のランナー)が 'async'関数テストを並行して実行するには、悪いAPIデザインとなるでしょう... – trusktr

+0

@trusktr' beforeEach' 'it'と' afterEach'などは明らかに直列で実行する必要がありますが、これがより効率的であると判明すれば、個々の「それ」を並行して実行することができます。 – riscarrott

関連する問題