З v28 до v29
Оновлюєте Jest з v28 до v29? Ця інструкція спрямована на те, аби допомогти змінити вашу конфігурацію та тести.
See changelog for the full list of changes.
Оновлюєтесь зі старішої версії? Інструкцію для оновлення з 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.
Якщо ви використовуєте 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
Приклади 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});