v28 から v29 へ
Jest を v28 から v29 にアップグレードしますか? このガイドは、設定とテストのリファクタリングを助けるために書かれました。
See changelog for the full list of changes.
古いバージョンからアップグレードしますか? こちらから 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 などのパッケージが追加の polyfill なしで動作するようになりました。
pretty-format
ConvertAnsi プラグインが pretty-format パッケージから削除され、代わりに jest-serializer-ansi-escapes が使用されるようになります。
jest-mock
Exports of Mocked* utility types from jest-mock package have changed. MaybeMockedDeep and MaybeMocked now are exported as Mocked and MockedShallow respectively; only deep mocked variants of MockedClass, MockedFunction and MockedObject are exposed.
TypeScript
このページの TypeScript の例は、Jest のAPIを明示的にインポートした場合にのみ動作します。
import {expect, jest, test} from '@jest/globals';
Consult the Getting Started guide for details on how to setup Jest with 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});