🦋
jestでファイルごとにテスト環境を切り替える
Nuxt+Firebaseを使ったプロジェクトでjestを使ったテストを書いていて、Nuxt側はjsdom
環境でテストを書きたいけどFirebaseのテストはnode
環境にしたいときの解決方法になります。
というか、jestでFirestoreのセキュリティルールのテストを書こうとしたら以下のようなエラーがでて調べたたけです😂
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/en/configuration#testenvironment-string.
Consider using the "node" test environment.
環境
- Vue.js 4.5.3
- Nuxt.js 2.14.12
- TypeScript 4.1
テストファイルごとに環境を指定する
ファイルの先頭にコメントでテスト環境を指定してあげればOK。
なお、デフォルトだとブラウザ環境を模したjsdom
が使われます。
testEnvironment [string]
Default: "jsdom"The test environment that will be used for testing. The default environment in Jest is a browser-like environment through jsdom. If
Jest公式ドキュメントより
firebase-test.spec.ts
/**
* @jest-environment node
*/
import { firestore as adminFirestore } from 'firebase-admin';
describe('firebase tests', () => {
it('test', async () => {
// Firebase関連のテスト
});
});
また、Nuxt側のテストではデフォルトでjsdom
が使われるためコメントで環境指定は不要です。
Discussion