概要
Reactアプリケーションの開発で、Jestを27系にアップデートしたら以下のエラーが発生したので、対応を書き残します。
The error below may be caused by using the wrong test environment, see https://jestjs.io/docs/configuration#testenvironment-string.
Consider using the "jsdom" test environment.
解決策
解決策は2通りあります。
ひとつ目。
テストファイルの冒頭に以下を書く。
/**
* @jest-environment jsdom
*/
ふたつ目。
jest.config.js
で指定する。
module.exports = {
// ...いろいろ設定
testEnvironment: 'jsdom',
};
全テストファイルに書くのが面倒であれば、こちらにしましょう。
ただ、jest.config.js
で指定すると、全テストファイルに適用されてしまうので、
DOM APIを使わないテストファイルでは、テストファイル冒頭にnode
を指定するのを忘れずに。
/**
* @jest-environment node
*/
詳細
Jest@27からデフォルトのtestEnvironment
が変わり、26まではjsdom
でしたが、27からnode
になりました。
この変更の背景には、
- nodeアプリ開発でテストを実行する際も、明記しなければ
jsdom
環境で実行されてしまい、パフォーマンスが劣化 - しかも
jsdom
環境で実行されていることに気づけない
という問題があり、それらを救済するためにデフォルトをnode
に変更したようです。
この変更で、DOM APIを使うフロントエンドのテストではエラーが発生するようになりました。
エラーが発生するから気づけるよね! 自分で設定変えてね! ということらしいです。