Jestで、他のすべてのテストが完了した後に実行されるクリーンアップまたはティアダウンタスクを実行することは可能ですか? setupFilesを使用すると、テストを実行する前にタスクを設定する方法と似ています。テストでエラーが発生したかどうかに関係なく実行できる場合は、ボーナスポイント。
afterAll(() => {})
をファイルの最上位(記述関数の外)に置くと、その特定のファイルからのテストが終了した後にのみ実行されます。
ユースケースは、開発データベースにユーザーを作成する多くのテストファイルがあり、後で各ユーザーをクリーンアップおよび削除する責任を各テストファイルに持たせたくない場合です。エラーはテストの作成中にも発生する可能性があるため、クリーンアップがエラーに関係なく発生した場合は、望ましいことです。
すべてのテストスイートの前に、ただしテストランナー(デフォルトではJasmine2)がグローバル環境を初期化した直後に起動するsetupFiles
への兄弟フックがあります。
setupFilesAfterEnv
と呼ばれます。次のように使用します。
{
"setupFilesAfterEnv": ["<rootDir>/setup.js"]
}
例setup.js:
beforeAll(() => console.log('beforeAll'));
afterAll(() => console.log('afterAll'));
setup.js
は何もエクスポートする必要はありません。すべてのテストスイート(すべてのテストファイル)の前に実行されます。テストランナーは既に初期化されているため、beforeAll
やafterAll
などのグローバル関数は、通常のテストファイルと同じようにスコープ内にあるため、好きなように呼び出すことができます。
jest.config.js
:
module.exports = {
// ...
setupFilesAfterEnv: [
"./test/setup.js",
// can have more setup files here
],
}
./test/setup.js
:
afterAll(() => {
// Cleanup logic
});
注意:
ちょうどこれを行う reporter と呼ばれる機能があるようです: