🐙
✍️ Jestのタイムアウト延長をサクッと解決
はじめに
Jestでテストを書いていると、長時間処理を含むテストが原因で「Exceeded timeout of 5000 ms for a test.」エラーにハマったことはありませんか?
本記事では、シンプルにタイムアウト値を伸ばす方法をまとめつつ、特にProjen環境での設定例を紹介します。
タイムアウトエラーとは?
デフォルトのタイムアウトが5秒に設定されていると、重めの処理(ネットワーク呼び出し、データベース初期化など)を含むテストで失敗します。
Exceeded timeout of 5000 ms for a test.
このままでは開発効率が下がるので、タイムアウト値を適切に伸ばしましょう。
package.json
でグローバル設定
方法1: 最もお手軽なのが package.json
の jest.testTimeout
を書き換える方法。
{
"jest": {
"testTimeout": 20000 // 全テストを20秒に延長
}
}
設定後はnpm test
やnpx jest
の実行時に反映されます。
.projenrc.ts
で設定
方法2: Projen プロジェクトをProjenで管理している場合は、.projenrc.ts
に直接設定を追加すると楽チンです。
const project = new typescript.TypeScriptProject({
// 省略...
jestOptions: {
jestConfig: {
testTimeout: 15000, // テスト全体を15秒に延長
},
extraCliOptions: ['--silent'],
},
});
再生成すれば、自動的に jest.config.js
に反映されます。
他の設定例
-
テスト単位の指定
test('長時間処理テスト', async () => { // …重い処理… }, 10000); // 個別に10秒に設定
-
jest.setTimeout
の利用// ファイルの先頭で jest.setTimeout(20000);
まとめ
- デフォルトの5秒では重めのテストに不向き
-
package.json
や.projenrc.ts
で一発設定 - 必要に応じてテスト単位やファイル単位でも調整可能
これでタイムアウト地獄から解放されて、快適なテストライフを送りましょう!🎉
Discussion