Aller au contenu principal
Version : 29.7

De la v28 à la v29

Mise à jour de la v28 à la v29 de Jest ? Ce guide a pour but de vous aider à refactoriser votre configuration et vos tests.

info

See changelog for the full list of changes.

remarque

Mettre à jour depuis une ancienne version ? You can see the upgrade guide from v27 to v28 here.

Compatibilité

Les versions de Node supportées sont 14.15, 16.10, 18.0 et supérieures.

Format du snapshot

As announced in the Jest 28 blog post, Jest 29 has changed the default snapshot formatting to {escapeString: false, printBasicPrototype: false}.

If you want to keep the old behavior, you can set the snapshotFormat property to:

+ snapshotFormat: {
+ escapeString: true,
+ printBasicPrototype: true
+ }

Mise à jour de JSDOM

jest-environment-jsdom has upgraded jsdom from v19 to v20.

info

If you use jest-environment-jsdom, the minimum TypeScript version is set to 4.5.

Notably, jsdom@20 includes support for crypto.getRandomValues(), which means packages like uuid and nanoid, which doesn't work properly in Jest@28, can work without extra polyfills.

pretty-format

ConvertAnsi plugin is removed from pretty-format package in favour of 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

Les exemples TypeScript de cette page ne fonctionneront comme documenté que si vous importez explicitement les API Jest :

import {expect, jest, test} from '@jest/globals';

Consult the Getting Started guide for details on how to setup Jest with TypeScript.

jest.mocked()

The jest.mocked() helper method now wraps types of deep members of passed object by default. If you have used the method with true as the second argument, remove it to avoid type errors:

- const mockedObject = jest.mocked(someObject, true);
+ const mockedObject = jest.mocked(someObject);

To have the old shallow mocked behavior, pass {shallow: true} as the second argument:

- const mockedObject = jest.mocked(someObject);
+ const mockedObject = jest.mocked(someObject, {shallow: true});