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