Сьогодні ми оголошуємо про перехід до глобальних ревізій Jest, пер шим великим релізом яких стане Jest 11.0. Jest використовувався розробниками Facebook та нашими безперервними системами інтеграції роками та ми вважаємо, що Jest вже давно вийшов за рамки “релізу 1.0”. Схожі зміни зробила команда React.
Якщо ви користуєтесь Jest 0.9 або Jest 0.10, оновлення має пройти без проблем. Всі зміни за останні кілька місяців було внесено в Jest 11.0.
Нове у Jest 11.0
Інтеграція з Babel і спрощене налаштування
babel-jest
додано в оновлений модульний репозиторій Jest та безперешкодно інтегровано в Jest. Якщо ви оновлюєте стару версію Jest або намагаєтесь додати Jest, ми рекомендуємо прочитати інструкцію для початку роботи.
Раніше Jest надавав API, наприклад, jest.dontMock
, які попереджували імітацію модуля, який згодом очікувався в функції require
. Тестування коду зазвичай виглядало так:
jest.dontMock('LikeButton');
const LikeButton = require('LikeButton'); // LikeButton не і мітується
Однак разом з операторами імпорту ES2015 це більше не працює. За специфікацію, import
спливають у верхню частину свого блоку коду. Приклад коду:
jest.dontMock('LikeButton');
import LikeButton from 'LikeButton';
під час виконання, насправді буде запущений в такому порядку:
import LikeButton from 'LikeButton'; // Відбуваєть ся до виклику dontMock.
jest.dontMock('LikeButton');
Модуль LikeButton буде імітовано, попри те, що ми відверто викликали dontMock
.
Коли останні версії Jest та babel-jest використовуються разом, виклики нових API jest.unmock
, jest.mock
, jest.disableAutomock
та jest.enableAutomock
спливають у верхню частину їхнього блоку, перед твердженнями імпорту ES2015.
jest.unmock('LikeButton');
import LikeButton from 'LikeButton'; // LikeButton не імітується належним чином!