Перейти до основного змісту

Jest 13.0: Flow & REPL

· 3 хвилини читання

Сьогодні ми з радістю повідомляємо про наступний великий реліз 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!