Сьогодні ми з радістю повідомляємо про наступний великий реліз Jest. Ми внесли значні зміни в Jest, які будуть корисні вам і всій інфраструктурі JavaScript тестування Facebook. Найголовніше, під час останнього Jest хакатону Facebook, ми додали статичні типи для всього коду Jest. П'ятнадцять людей працювали день і ніч, щоб додати типи Flow і нові функції в Jest. Типи Flow виконують дві задачі: по-перше, ми вважаємо, що код пишеться, аби бути прочитаним. Зазвичай, код пишуть лише один раз, але читають десятки людей протягом багатьох років. Додавання статичних типів в проєкт допомагає документувати код і пояснювати архітектуру Jest. По-друге, додавання статичних типів полегшує обслуговування та дозволить нам більш впевнено рефакторити Jest, не ламаючи наявний код.
Проєкт Flow значно розвинувся всередині Facebook й успішно використовується в багатьох наших фреймворках і коді майже всіх наших продуктів. Екземпляри чудово розпаралелюються: процес йде файл за файлом, поки не типізовано достатню кількість бази коду. Потім, Flow надає реальні значення та описові інструкції великих змін. За допомогою цього, було виявлено багато крайніх випадків і помилок.
За допомогою lerna, ми продовжували модулювати проєкт Jest. З невеликим оновленням конфігурації, Flow і lerna тепер добре співпрацюють. Розбиття Jest на пакети допомогло нам переосмислити границі модулів та опублікувати окремі корисні пакети: cli інструменти jest-runtime
та jest-repl
дозволяють виконувати скрипти в ізольованому середовищі Jest, а також дають змогу запускати та налагоджувати програму напряму з командного рядка. Особливо це корисно для проєктів, що використовують модульні правила Facebook @providesModule
. Для початку, просто встановіть jest-repl
та запустіть його в каталозі, в якому ви зазвичай запускаєте ваші тести! Ми також опублікували пакет jest-changed-files
, який знаходить змінені файли в системі контролю версій git або hg, звичний інструментарій розробника.
Нові та покращені функції
- Додано плагін сповіщень, який показує сповіщення про запуск тесту при використанні
--notify
. - Додано опцію конфігурації
browser
для коректного виконання npm пакетів з полем browser вpackage.json
, якщо ви пишете тести для клієнтських побічних додатків. - Удосконалено повідомлення "тестів не знайдено", яке тепер повідомляє, які тести були знайдені та як вони фільтрувались.
- Додано
jest.isMockFunction(jest.fn())
для тестування функцій-імітацій. - Поліпшено вивід тестового генератора звітів і додано підсумок тестового звіту помилок під час масового запуску тестів.
- Додано підтримку імітації віртуальних модулів за допомогою
jest.mock('Module', implementation, {virtual: true})
. - Видалено каталог
.haste_cache
. Jest тепер використовує тимчасове розташування файлів, якому операційна система надає перевагу. - Додано тривалість окремих тестів у детальний режим.
- Додано можливість запису знімків в Jest. Щодо цієї функції, ми скоро опублікуємо окремий допис у блозі.
Окрім того, ми отримали повну зміну дизайну вебсайту, зроблену Matthew Johnston та додали документацію для Jest з webpack. Happy Jesting!