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

З v28 до v29

Оновлюєте Jest з v28 до v29? Ця інструкція спрямована на те, аби допомогти змінити вашу конфігурацію та тести.

info

Повний список змін шукайте в журналі змін.

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()

Допоміжний метод jest.mocked() тепер за замовчуванням огортає типи глибоких частин переданого об'єкта. Якщо ви використовували метод з другим аргументом 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});