web-dev-qa-db-ja.com

すべてのテストが実行された後のクリーンアップ

Jestで、他のすべてのテストが完了した後に実行されるクリーンアップまたはティアダウンタスクを実行することは可能ですか? setupFilesを使用すると、テストを実行する前にタスクを設定する方法と似ています。テストでエラーが発生したかどうかに関係なく実行できる場合は、ボーナスポイント。

afterAll(() => {})をファイルの最上位(記述関数の外)に置くと、その特定のファイルからのテストが終了した後にのみ実行されます。

ユースケースは、開発データベースにユーザーを作成する多くのテストファイルがあり、後で各ユーザーをクリーンアップおよび削除する責任を各テストファイルに持たせたくない場合です。エラーはテストの作成中にも発生する可能性があるため、クリーンアップがエラーに関係なく発生した場合は、望ましいことです。

20
dcochran

すべてのテストスイートの前に、ただしテストランナー(デフォルトではJasmine2)がグローバル環境を初期化した直後に起動するsetupFilesへの兄弟フックがあります。

setupFilesAfterEnv と呼ばれます。次のように使用します。

{
    "setupFilesAfterEnv": ["<rootDir>/setup.js"]
}

setup.js

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

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

setupTestFrameworkScriptFile firing beforeAll and afterAll

19

jest.config.js

module.exports = {
    // ...
    setupFilesAfterEnv: [
        "./test/setup.js",
        // can have more setup files here
    ],
}

./test/setup.js

afterAll(() => {
    // Cleanup logic
});

注意:

2
Tho

ちょうどこれを行う reporter と呼ばれる機能があるようです:

1
rivanov