Сьогодні ми з радістю анонсуємо Jest 23, наш найбільший великий реліз станом н а сьогодні! Разом із понад 100 учасниками, ми публікуємо купу оновлень та виправлень помилок. Дякуємо всім у спільноті за допомогу в Покращенні JavaScript Тестування.
Ми також хотіли б привітати Babel і webpack з вступом до спільноти Jest! Після переходу з Mocha на Jest 23 Beta, webpack отримав зменшення загального часу виконання тестових наборів в 6 разів, з 13 хвилин до 2 хв 20 секунд. #blazingmeansgood
Ось деякі з Jest 23 новинок і принципових змін.
Для повного списку дивіться журнал змін.
Інтерактивний режим знімка
Ми додали нову опцію меню спостереження за замовчуванням під назвою Інтерактивний режим знімка. Цей новий режим дозволяє вам проходитись через кожен невдалий знімок в кожному провальному наборі, аби переглянути та обрати оновити або пропустити кожен окремо.
Подивіться документацію Інтерактивного режиму знімків тут.
Матчери властивостей знімків
Часто об'єкти, які ви знімаєте, містять згенеровані значення, такі як дати та ID. Jest тепер дозволяє передавати властивості в матчери знімків, які визначають структуру даних замість конкретних значень. Ці матчери властивостей будуть перевірені перш ніж серіалізувати тип матчера (замість значення), надаючи вам послідовні результати знімків виконання тестів.
Для додаткової інформації дивіться оновлену toMatchSnapshot
документацію або посібник Property Matcher.
Користувальницькі асинхронні матчери
Тепер ми підтримуємо асинхронні матчери за допомогою expect.extends
! Асинхронні матчери повертають проміс, щоб ви могли очікувати
на виконання матчера. Для прикладу:
Документи доступні тут.
Користувацькі асиметричні матчери
Асиметричні матчери є відмінним інструментом, якщо ви дбаєте тільки про асиметричну рівність. Наприклад, коли ліва сторона повинна бути об'єктом з деяким підмножиною властивостей праворуч замість точного збігу. Jest надає ряд вбудованих асиметричних матчерів, і в цьому релізі ми додаємо користувацькі асиметричні матчери.
Jest Each
@mattphillipsio пожертвував пакет jest-each
для Jest Core (дякуємо, Matt!). jest-each
- це бібліотека, натхнена mocha-each
та Spock Таблицями даних, яка дозволяє визначити таблицю тестових випадків, а потім запустити тест для кожного рядка з вказаними значеннями стовпців. Ми підтримуємо обидва типи масивів, шаблонні літерали всіх видів describe
та test
. Документи доступні тут, а для тих, хто ще не перейшов на Jest 23, ми опублікуємо jest-each
окремо!
Окремо дякуємо Prettier за надшвидкі правки таблиць форматування (зверніть увагу на Prettier 1.13)!
Нові матчери
Ми додаємо матчери в основний проєкт, тільки якщо віримо в їх користь для великої кількості людей спільноти Jest, залишаючи більшість матчерів доступними спільноті (див. jest-extended). Деякі матчери потрапили в основний склад з Jest 23:
- nthCalledWith
- toReturn
- toReturnTimes
- toReturnWith
- lastReturnedWith
- nthReturnedWith
- toStrictEqual
Оновлена документація expect доступна тут.
Налагодження зависання тестів
Розповсюджена проблема, яку ми помітили, стосується моменту зависання Jest після виконання тестів. Зазвичай, це стається через програмний код, який залишає відкриті елементи керування, заважаючи завершенню роботи Jest. Раніше, користувачі обходили це, використовуючи --forceExit
(не рекомендується).
Аби допомогти відстежувати подібні проблеми, відтепер ми знаходимо моменти, на яких Jest не завершує свою роботу:
Також ми надаємо новий прапорець --detectOpenHandles
, що допоможе знайти відкриті елементи керування:
Оновлена документація CLI доступна тут.
Плагіни режиму спостереження
Ми повністю переписали систему режиму спостереження, що дозволить додавати користувацькі плагіни в цей режим. Тепер плагіни режиму спостереження дозволяють підключатись в події Jest та надавати користувацькі опції в Меню режиму спостереження. Всі питання Режиму спостереження за замовчуванням реалізовані в системі у вигляді плагінів; документацію щодо створення власного плагіну можна знайти тут.
У результаті цієї зміни ми мали змогу повернути підтримку попереднього введення у вигляді плагіну режиму спостереження за допомогою jest-watch-typeahead!
Перегляньте jest-watch-typeahead для документації та інструкцій щодо встановлення. Велика дяка @rogeliog за нову систему плагінів режиму спостереження та плагін jest-watch-typeahead!