概要
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を使うフロントエンドのテストではエラーが発生するようになりました。
エラーが発生するから気づけるよね! 自分で設定変えてね! ということらしいです。