Перейти до основного змісту
Версія: Next

З 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-jsdom оновив jsdom з v19 до v20.

info

Якщо ви використовуєте jest-environment-jsdom, встановлено мінімальну версію TypeScript 4.5.

Що важливо, jsdom@20 підтримує crypto.getRandomValues(), тож пакети на зразок uuid та nanoid, які не працюють коректно в Jest@28, можуть працювати без поліфілів.

pretty-format

Плагін ConvertAnsi видалений з пакета pretty-format, натомість присутній jest-serializer-ansi-escapes.

jest-mock

Змінився експорт типів утиліт Mocked* з пакета jest-mock. MaybeMockedDeep і MaybeMocked тепер експортуються як Mocked і MockedShallow відповідно; лише глибоко імітовані варіанти MockedClass, MockedFunction і MockedObject розкрито.

TypeScript

info

Приклади TypeScript з цієї сторінки будуть працювати, як задокументовано, тільки якщо ви явно імпортуєте Jest API:

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

Інструкцію щодо налаштування Jest за допомогою TypeScript можна знайти на сторінці Початок роботи.

jest.mocked()

The jest.mocked() helper method now wraps types of deep members of passed object by default. Якщо ви використовували метод з другим аргументом true, видаліть його, щоб уникнути помилок типів:

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

Щоб отримати стару поведінку імітації, передайте {shallow: true} другим аргументом:

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