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

v28 から v29 へ

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

info

See changelog for the full list of changes.

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