2016-12-24 11 views
9

Jestでは、他のすべてのテストが完了した後に実行されるクリーンアップまたはティアダウンのタスクを実行できますか? setupFilesと同様に、テストが実行される前にタスクをセットアップすることができます。テストにエラーがあった場合でも、これが実行できる場合はボーナスポイント。すべてのテストを実行した後でJestをクリーンアップする

afterAll(() => {})をファイルの最上位に配置すると(指定された機能の外部に)、特定のファイルからのテストが終了した後にのみ実行されます。

ユースケースには、開発データベースにユーザーを作成するテストファイルがたくさんあります。後でユーザーをクリーンアップして削除する必要はありません。テストの作成中にもエラーが発生する可能性があります。その場合は、エラーが発生した場合でもクリーンアップが行われるようにしてください。

+0

私は、各テストが完全に環境を制御するので、それぞれのテストは、その環境の責任である必要があります持っていなければならないと思います。あなたが必要とするのは、複数の環境を持つことです。たとえば、メモリ内で(dbのモック実装で)実行され、実際にデータベースで実行される環境などです。 –

+0

テストランナーにクリーンアップコマンドを追加できますか?つまり、gulp、make、gruntなどを使用している場合は、 'run_your_tests.js; clean_up_database; ' – dm03514

答えて

5

setupFilesへの兄弟フックがありますが、これはテストランナー(デフォルトではJasmine2)がグローバル環境を初期化した直後に発生します。

これはsetupTestFrameworkScriptFileと呼ばれ、setupFilesのような配列ではなく、パラメータとして文字列をとります。

はこのようにそれを使用します。

{ 
    "setupTestFrameworkScriptFile": "<rootDir>/setup.js" 
} 

setup.js

beforeAll(() => console.log('beforeAll')); 
afterAll(() => console.log('afterAll')); 

setup.jsは何をエクスポートする必要はありません。すべてのテストスイート(すべてのテストファイル)の前に実行されます。テストランナーは既に初期化されているので、beforeAllafterAllのようなグローバル関数は、通常のテストファイルのようなスコープにあり、好きなように呼び出すことができます。

setupTestFrameworkScriptFile firing beforeAll and afterAll

+2

甘い、これは私が必要なもののように見える!ありがとうございました。 – dcochran

関連する問題