v28 から v29 へ
Jest を v28 から v29 にアップグレードしますか?このガイドは、設定とテストのリファクタリングを支援することを目的としています。
変更点の完全なリストについては、変更履歴を参照してください。
古いバージョンからアップグレードしますか?v27 から v28 へのアップグレードガイドはこちらをご覧ください。
互換性
サポートされる Node のバージョンは 14.15、16.10、18.0 以上です。
スナップショット形式
Jest 28 のブログ投稿で発表したように、Jest 29 では、デフォルトのスナップショット形式が {escapeString: false, printBasicPrototype: false} に変更されました。
以前の動作を維持したい場合は、snapshotFormat プロパティを次のように設定できます
+ snapshotFormat: {
+ escapeString: true,
+ printBasicPrototype: true
+ }
JSDOM のアップグレード
jest-environment-jsdom が jsdom を v19 から v20 にアップグレードしました。
jest-environment-jsdom を使用する場合、最小の TypeScript バージョンは 4.5 に設定されます。
特に、jsdom@20 には crypto.getRandomValues() のサポートが含まれています。つまり、Jest@28 では正常に動作しない uuid や nanoid などのパッケージは、追加のポリフィルなしで動作できるようになります。
pretty-format
ConvertAnsi プラグインが、jest-serializer-ansi-escapesを優先して pretty-format パッケージから削除されました。
jest-mock
jest-mock パッケージからの Mocked* ユーティリティ型のエクスポートが変更されました。MaybeMockedDeep および MaybeMocked は、それぞれ Mocked および MockedShallow としてエクスポートされるようになりました。MockedClass、MockedFunction、および MockedObject のディープモックバリアントのみが公開されます。
TypeScript
このページの TypeScript の例は、Jest API を明示的にインポートした場合にのみ、ドキュメントどおりに動作します
import {expect, jest, test} from '@jest/globals';
Jest を TypeScript でセットアップする方法の詳細については、はじめにガイドを参照してください。
jest.mocked()
jest.mocked() ヘルパーメソッドは、デフォルトで渡されたオブジェクトのディープメンバーの型をラップするようになりました。2 番目の引数として true を使用していた場合は、型エラーを回避するために削除してください
- const mockedObject = jest.mocked(someObject, true);
+ const mockedObject = jest.mocked(someObject);
以前の浅いモック動作にするには、2 番目の引数として {shallow: true} を渡します
- const mockedObject = jest.mocked(someObject);
+ const mockedObject = jest.mocked(someObject, {shallow: true});