🦋

jestでファイルごとにテスト環境を切り替える

2021/02/20に公開

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