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});