【Tips】Jestで非同期処理を使ったときにTimeoutなる場合の対応

プログラミング
スポンサーリンク

キジ(@kiji)です。

タイトルのように、node.jsのテストツールである、Jestに関する記事です。

問題

describe('分類(ファイルなど)', () => {
    it('非同期処理テスト', async() => {
        await xxx();
        expect(...);
    });  
});

上記のように、xxxという非同期処理のテストをしたい場合、awaitで待てるようにする必要があります。

awaitを使うには、その実行ブロックをasyncで囲ってあげる必要があります。
しかし、上記のように記載すると、Jestがitを読み込んでくれず、Timeoutされてしまいます。

※ 内部的になぜTimeoutをしているのかは把握できていません。ご存じの方がいらっしゃいましたら、コメントしていただけると幸いです。

対処

describe('分類(ファイルなど)', () => {
    it('非同期処理テスト', () => {
        (async () => {
            await xxx();
            expect(...);
        })();
    });  
});

このように、itブロックの中でasycを再定義し、実行することでTimeoutを回避できます。

コメント

タイトルとURLをコピーしました