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