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';
TypeScript で Jest をセットアップする方法の詳細については、Getting Started ガイドを参照してください。
jest.mocked()
The jest.mocked()
helper method now wraps types of deep members of passed object by default. 第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});