Summary
- nextjs+typescript環境にjestをインストールする機会があったので、設定した手順をメモしておく。
install
npm install @nuxtjs/dotenv npm install --save-dev jest @types/jest ts-jest
setting
package.json
ファイルに下記の記述を追記する
"scripts": { ..., "test": "jest --runInBand" ..., }
app/tsconfig.json
ファイルに下記の記述を追加する
"compilerOptions": { ..., "types": ["...", "@types/jest"], .... },
jestの初期化
- jest.js --initをコマンドを実行する
./node_modules/jest/bin/jest.js --init
- 「構成ファイルにTypescriptを使用しますか? ›(y / N)」と聞かれるので、ここはyesと入力して下さい。
? Would you like to use Typescript for the configuration file? › (y/N)
- nodeを選択する
? Choose the test environment that will be used for testing › - Use arrow-keys. Return to submit. ❯ node jsdom (browser-like)
- 「? Jestにカバレッジレポートを追加しますか? ›(y / N)」と聞かれるので、やっぱりyesと入力して下さい。
? Do you want Jest to add coverage reports? › (y/N) ←レポートが欲しければ y
- 「?カバレッジ用のコードを計測するためにどのプロバイダーを使用する必要がありますか? 」と聞かれているので、とりあえず「v8」を選択する
? Which provider should be used to instrument code for coverage? › - Use arrow-keys. Return to submit. ❯ v8 babel
(参考文献)※nodeのバージョンが14のため、v8を選択する
https://jestjs.io/ja/docs/configuration#coverageprovider-string
- 「?すべてのテストの間にモックコールとインスタンスを自動的にクリアしますか? ›(y / N)」と聞かれているので、「N」を選択する
? Automatically clear mock calls and instances between every test? › (y/N)
上記の設定を手順を行うと「jest.config.ts」にファイルが作成される
jest.config.tsファイルの設定
(変更前) // preset: undefined, (変更後) preset: "ts-jest", (変更前) // setupFiles: [], (変更後) setupFiles: ["/root/tests/setup-tests.ts"], (変更前) // globals: {}, (変更後) globals: { 'ts-jest': { isolatedModules: true } }, (変更前) // collectCoverageFrom: undefined, (変更後) collectCoverageFrom: [ '**/*.{ts,tsx}', '!**/*.d.ts', "!**/node_modules/**", "!**/vendor/**" ],
- `tests/setup-tests.ts'ファイルを作成する。上記の作成した.envファイルを読み込む
import dotenv from 'dotenv'; dotenv.config({ path: '.env' });
(参考文献)
https://stackoverflow.com/questions/50259025/using-env-files-for-unit-testing-with-jest https://www.adoclib.com/blog/access-process-env-property-when-testing-nuxt-js-app-with-jest.html
Test execution command
npm test