Firebase functions とJestの組み合わせで正しく終了させる
備忘録のメモです.
以下の環境でテストを書いてたら、Jestの終了に時間がかかりメッセージが出力されてました.
- @firebase/testing
0.16.5
- @firebase/functions
0.4.29
- Jset
24.9.0
以下の様なメッセージになってるため、非同期処理がうまくできてない感じだけは分かった.
Jest did not exit one second after the test run has completed.
This usually means that there are asynchronous operations that weren't stopped in > your tests. Consider running Jest with
--detectOpenHandles
to troubleshoot this issue.
Jestのドキュメントと、@firebase/functions のコードを読みあさって以下の仕様を見つけました.
- Jestは結果の取得に1秒以上かかると警告が出る
- Jsetのテストのタイムアウトはデフォルトだと5秒
-
@firebase/functions
のhttpsCallable
のタイムアウトは70秒
1秒未満で終了させれば警告が出なくなるので以下の様に書き直せばOKです
ここでは900msに設定しました.
const testFuncs = firebase.initializeTestApp(config);
const functions = testFuncs.functions();
functions.useFunctionsEmulator("http://localhost:5001");
// timeoutを指定
const func = functions.httpsCallable('func', { timeout: 900 });
const res = await func({ path: "hello" });
1秒未満でどうしてもタイムアウトする場合は、 --detectOpenHandles
を指定してタイムアウトを伸ばす方法もあります.
Author And Source
この問題について(Firebase functions とJestの組み合わせで正しく終了させる), 我々は、より多くの情報をここで見つけました https://qiita.com/satoruk/items/f6056779cb69c2b20c01著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .