メッセージ「jest.setTimeout で指定された 5000 ミリ秒のタイムアウト内に非同期コールバックが呼び出されませんでした」質問する

メッセージ「jest.setTimeout で指定された 5000 ミリ秒のタイムアウト内に非同期コールバックが呼び出されませんでした」質問する

私は Puppeteer と Jest を使用してフロントエンド テストを実行しています。

私のテストは次のようになります:

describe("Profile Tab Exists and Clickable: /settings/user", () => {
    test(`Assert that you can click the profile tab`, async () => {
      await page.waitForSelector(PROFILE.TAB);
      await page.click(PROFILE.TAB);
    }, 30000);
});

テストを実行すると、すべてが期待どおりに動作することもあります。また、エラーが発生することもあります。

タイムアウト - jest.setTimeout で指定された 5000 ミリ秒のタイムアウト内に非同期コールバックが呼び出されませんでした。

     at node_modules/jest-jasmine2/build/queue_runner.js:68:21 <br/>
     at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:633:19)

これは以下の理由で奇妙です:

  1. タイムアウトを30000に指定しました

  2. このエラーが発生するかどうかは、非常にランダムなようです

なぜこうなった?

ベストアンサー1

ここで指定するタイムアウトは、デフォルトのタイムアウトよりも短くする必要があります。

デフォルトのタイムアウトは で5000、フレームワークのデフォルトは です。テスト内でタイムアウトを指定するにはjasminejest

jest.setTimeout(30000);

ただし、これはテストに固有のものになります。または、フレームワークの構成ファイルを設定することもできます。

Jestの設定

// jest.config.js
module.exports = {
  // setupTestFrameworkScriptFile has been deprecated in
  // favor of setupFilesAfterEnv in jest 24
  setupFilesAfterEnv: ['./jest.setup.js']
}

// jest.setup.js
jest.setTimeout(30000)

以下のスレッドも参照してください:

テストごとの setTimeout #5055

jasmine.DEFAULT_TIMEOUT_INTERVAL を設定可能にする #652

PS: スペルミスsetupFilesAfterEnv(つまりsetupFileAfterEnv) でも同じエラーが発生します。

おすすめ記事