先にまとめ
ここまでのあらすじ
4 年前のプロジェクトを開いて npx npm-check-updates -u
でパッケージを更新、npm test
したら落ちた。
解決方法
testEnvironment: 'jsdom'
を設定jest-environment-jsdom
をインストール
エラー
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.
ReferenceError: document is not defined
11 | { content },
12 | );
> 13 | ReactDOM.render(component, document.body);
| ^
14 |
15 | elMarkdown = document.body.firstChild as HTMLDivElement;
16 | }
メッセージの URL ↓にある通り、この testEnvironment
で JSDOM を指定する必要があるみたい。jest.config.js
に追記する。
module.exports = { testEnvironment: 'jsdom', … };
実行したらまたエラーになった。
$ npm t
> @ginpei/[email protected] test
> jest
● Validation Error:
Test environment jest-environment-jsdom cannot be found. Make sure the testEnvironment configuration option points to an existing node module.
Configuration Documentation:
https://jestjs.io/docs/configuration
As of Jest 28 "jest-environment-jsdom" is no longer shipped by default, make sure to install it separately.
言われた通り jest-environment-jsdom をインストールする。
$ npm i -D jest-environment-jsdom
これでちゃんと試験が動くようになった。めでたし、めでたし。