Сьогодні ми із задоволенням публікуємо версію 19 платформи для тестування Jest. Це найбільший реліз Jest, який ми коли-небудь публікували, і ми дуже раді показати вам, що ми створили за останні два місяці:
Поглиблений режим спостереження
Ми повністю переписали режим спостереження, щоб зробити його миттєвим та більш охоплювальним. В результаті, отримуємо поглиблений досвід використання: тести одразу перезапускаються після змін у файлі та ми полегшили вибір правильних тестів.
Оновлення знімків
Ми зробили декілька змін у форматі знімку. Ми не вносимо такі зміни часто і розглядаємо їх додавання, лише якщо вони дійсно покращать роботу знімків. Так само як додавання номера версії знімку, ми акумулювали ряд змін, які ми вже деякий час хотіли внести до формату:
- Ми прибрали префікс “test” в іменах знімків з верхнього рівня
test
абоit
викликів. - Ми покращили вивід елементів React, аби отримувати менше змін при змінах властивостей елементу.
- Ми покращили механізм обходження символів для кращої захищеності.
До цього:
exports[`test snap 1`] = `
<header>
<h1>
Jest \"19\"
</h1>
<Subtitle
name="Painless JavaScript Testing" />
</header>
`;
Після (немає префікса "test", кращий JSX рендеринг, заголовок версії):
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`snap 1`] = `
<header>
<h1>
Jest "19"
</h1>
<Subtitle
name="Painless JavaScript Testing"
/>
</header>
`;
Ми вирішили, що прийшов час ввести версії знімків, щоб гарантувати, що всі розробники використовують сумісні версії Jest. Ось як ми попереджаємо вас про необхідність оновлення вашого знімку:
Переконайтеся, що ви скасували всі локальні зміни перед оновленням, аби зробити перехід безпроблемним і переконатись, що жодні небажані зміни від провальних тестів не були додані в нові знімки.
Вдосконалений вивід пропущених тестів
Пропущені тести виводяться єдиним рядком замість виводу кожного окремого тесту при тестуванні в детальному режимі або одному наборі. Сподіваємось, це дозволить вам сфокусуватися на важливих тестах. Також це займає значно менше простору!
Нові аргументи CLI
Jest 19 публікується з двома новими аргументами покриття, які ви можете запустити з командного рядка:
--collectCoverageFrom
--coverageDirectory
Тепер ми також виводимо неприпустимі аргументи CLI, не ігноруючи їх. Але ми допоможемо вам корисними повідомленнями про помилки(зразок наведено нижче); наприклад, коли ви намагаєтесь запустити jest --watch
:
Покращення expect
Ми наближуємось до майже повного паритету функцій в npm пакеті expect
. Michael Jackson, автор пакету, погодився пожертвувати його проєкту Jest, що означає, що jest-matchers
буде перейменовано на expect
. Оскільки наша версія expect
не розроблялась з урахуванням повної сумісності, Christopher Chedeau працює над codemod, щоб зробити перехідним безпроблемним. Christopher також працював над низкою покращень для jest-matchers
, які дозволять використання поза межами Jest і навіть всередині браузерів.
eslint-plugin-jest – наш власний плагін ESLint
Завдяки Jonathan Kim, Jest нарешті має свій офіційний плагін ESLint. Він містить три правила:
- no-disabled-tests - це правило запобігає випадковому внесенню вимкнутих тестів у зміни.
- no-focused-tests - це правило запобігає внесенню в зміни фокус тестів, які вимкнули б інші тести цього набору.
- no-identical-title - забороняє ідентичні заголовки в назвах тестів.
Ви можете встановити його за допомогою npm install --save-dev eslint-plugin-jest
або yarn add --dev eslint eslint-plugin-jest
, і він може бути включений шляхом додавання {"plugins": ["jest"]}
до вашої конфігурації eslint.
Новий публічний пакет: jest-validate
Коли ми переробили код перевірки та нормалізації для конфігурації Jest, ми були настільки задоволені новими повідомленнями про помилки, що ми виділили його в окремий модуль, щоб поділитися з іншими. З Jest 19 ми раді додати jest-validate
до нашої самостійної родини пакетів.
jest-validate
- це узагальнений інструмент перевірки конфігурації, який допоможе вам попередженнями, помилками та повідомленнями про застарілість в вашому інструменті JavaScript. Він також здатен показувати зручні для користувачів приклади правильних налаштувань та надає простий, але потужний API. Сподіваємось, це стане гарним доповненням до ваших проєктів!
Ми раді повідомити, що jest-validate
перевіряє параметри конфігурації prettier, починаючи з v0.12. Додавайте його до свого проєкту, спробуйте, надішліть нам відгук та допомагайте з покращенням, роблячи запити на ухвалення змін на GitHub.
Вдосконалені асиметричні матчери
Ми перемістили асиметричну реалізацію матчерів з Jasmine в Jest, що дало змогу надалі покращувати користувацький досвід. Як результат, асиметричні матчери тепер краще форматуються, ми додали новий матчер expect.stringContaining()
, а також пов'язали їх з expect.toMatchObject()
, тож ви можете використовувати найкраще поєднання:
Кращі ручні імітації
З останнім релізом, ручні імітації нарешті працюють з вкладеними каталогами. Наприклад, __mocks__/react-native/Libraries/Text/Text.js
тепер будуть працювати як очікується та створювати правильний модуль. Ми також виправили проблеми з віртуальними імітаціями й перехідними залежностями, а також вдосконалили moduleNameMapper
, щоб імітації не перезаписувались, якщо багато шаблонів завершуються одним і тим самим файлом.
Важливі Зміни
Під час чисток та виправлень, ми видалили параметр конфігурації mocksPattern
, який офіційно ніколи не підтримувався. Ми також перейменували параметр конфігурації testPathDirs
на roots
, що краще пояснює, як його можна використати. Для roots
, конфігурацією за замовчуванням є ["<rootDir>"]
і може бути змінена для внесення будь-якої кількості каталогів. Параметр конфігурації rootDir завжди використовувався в основному як маркер для інших параметрів, тож це перейменування має зробити процес налаштування Jest зрозумілішим.
Оновлена документація
Як ви вже могли бачити, Hector Ramos і Kevin Lacke надали документації Jest новий вигляд. Ми змінили спосіб організації сайту, тепер Документація та API представлені окремими сторінками:
- В Документація ви можете знайти вступ до Jest, включно з Початок роботи або Тестування асинхронного коду, і зручні посібники, такі як Тестування за допомогою знімків Тестування React Native App, Використання з webpack або Міграція на Jest та багато іншого!
- Розділ API налічує всі доступні методи Jest:
expect
іjest
об'єкти, функції-імітації, глобальні дані, а також параметри конфігурації з package.json та командного рядка.
Домашня сторінка була повністю перероблена, аби містити більше опису суті Jest:“Платформа для тестування, що не потребує конфігурації. Ми також переконані, що новий вигляд зручніший для мобільних пристроїв. А для тих, хто використовує RSS, ми нарешті надали стрічку нашого блогу.
Оновлення спільноти
- Нам дуже сподобалася дискусія “Вступ до Jest“ від Vas Boroviak.
- Слідкуйте за @jestjs_ у Twitter.
- Команда Jest Core збирається раз на тиждень, щоб обговорити поточні та майбутні проблеми. Якщо ви б хотіли працювати над Jest, надішліть нам декілька запитів на злиття і приєднуйтеся до наших щотижневих командних зустрічей.
- Чудові інженери з Artsy написали про Jest як частину свого фронтенд стека на 2017 рік.
- Stephen Scott написав детальну статтю про тестування компонентів React, в якій він зважує плюси та мінуси різних підходів.
- Використання Jest з vue.js стане набагато легшим після прочитання допису з блогу Cristian Carlesso.
- Michele Bertoli написав книгу про шаблони дизайну та найкращі практики React, яка містить цілий розділ про Jest.
- Вдосконалено команду
--notify
, яка показує повідомлення операційної системи, що тепер також може повторно запустити тести напряму з повідомлення. Насправді це просто функція Jest, ми просто перевіряємо, чи ви все ще читаєте цей допис. - Jest став частиною react-boilerplate.
- Читайте про приховані сильні сторони матчерів Jest.
Врешті-решт, ми раді повідомити про те, що виконавець тестів ava додав частини платформи Jest і тепер опублікований з базовою підтримкою знімків, а також використовує pretty-format. Об'єднання тестової інфраструктури спрощує вивчення тестування додатків і дає нам змогу ділитися найкращими практиками. Ми з нетерпінням очікуємо побачити, чого ми можемо навчитись з наявних тестових бібліотек в майбутньому.
Повний журнал змін можна знайти на GitHub. Jest 19 дійсно став результатом зусиль JavaScript спільноти, аж 17 людей зробили внесок в цей реліз. Ми дякуємо кожному з вас за вашу допомогу в покращенні цього проєкту.
Цей допис був написаний Rogelio Guzman та Michał Pierzchal.