最近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
を指定