Firebase Cloud Functionsでjestを導入するまでの道のり
最近Firebase Cloud Functionsでお仕事をしているのですが、jestを入れたちょっとハマったのでその記録です。
環境について
firebase initで全力でenterfunctionsを用意しました。 一応こんな感じでTypeScriptでコード書いててeslintは導入済みの想定です。
まずはjestを入れる
|
|
こんな感じでいれました。
テスト用のコードはビルドしたくないのでtsconfigの設定を変更する
今回はテストは __test__ ディレクトリに入れる用にしているのでexcludeで__test__はビルド対象から外すようにします。
|
|
eslintでエラーになった
|
|
どうやらtscofnig.jsonで、testファイルをexcludeしたのが原因らしい。
しかしtestコードはbuildしたくない。。
jest用のtsconfig作って解決した
tsconfig.jest.json
|
|
このようにtsconfig.jest.jsonを作って .eslintrc.jsを以下のように修正した。
|
|
これでうまく行った。
最後にnpm scriptsにtest: 'jest'って書いてnpm run testとかできるようにした。
ついでだからGithub Actionsでjest動かすようにした
こんな感じに書いた。
|
|
でもなぜかエラーになった。
とおもったらjest.config.jsがignoreされててコミットできてなかった…。
原因はfunctions/.giignoreの記述にあった。
|
|
このようにjsファイルがコミットされないようになっていたのでjest.config.jsもコミットされてなかった。。。
なので下記のように修正。
|
|
まとめ
- yarn add –dev jest @types/jest ts-jest
- tsconfig.jsonでexcludeを
src/**/__test__/*.ts - tsconfig.jest.jsonでexcludeを
[]に - .eslintrc.jsでparserOptions.projectで
tsconfig.jest.jsonを指定