メインコンテンツへスキップ
Version: 29.2

v28 から v29 へ

Jest を v28 から v29 にアップグレードしますか? このガイドは、設定とテストのリファクタリングを助けるために書かれました。

info

変更の全リストについては、changelog を参照してください。

note

古いバージョンからアップグレードしますか? こちらから 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-jsdomjsdom を v19 から v20 にアップグレードしました。

info

jest-environment-jsdom を使用する場合、TypeScript の最小バージョンは 4.5 に設定されます。

特に、jsdom@20 には crypto.getRandomValues() のサポートが含まれます。つまり、Jest@28 では適切に動かなかった uuidnanoid などのパッケージが追加の 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

info

このページの 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});