Различия между 'it' и 'test' в Jest: мифы и реальность
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
it
и test
в Jest — это по сути два синонима, применяемых для определения тестовых случаев. test
чаще используется для формулирования тестов в логическом стиле, в то время как it
подходит для создания более естественного, поведенческого описания согласно подходу BDD (поведенческое тестирование).
test('корректно производит сумму целых чисел', () => {
// Проверяем математику на прочность
expect(1 + 1).toBe(2);
});
it('должен корректно суммировать целые числа', () => {
// Математика подвергается проверке
expect(1 + 1).toBe(2);
});
Выбор между it
и test
в значительной степени определяется предпочтениями вашей команды и их стилистическими наклонностями в написании тестов.
Осмысление алиасов
В зависимости от того, выбираете ли вы it
или test
, меняется интерпретация тестов в виде понятных сюжетов. it
обычно используется в контексте BDD, при этом фокусируясь на ожидаемом поведении компонента.
// Стиль BDD используя `it`
it('осуществляет обработку API-запроса', () => {
// Тестируем обработку запроса
});
// Прямолинейный стиль используя `test`
test('обрабатывает запрос к API', () => {
// То же самое, но без акцента на поведение
});
Организация наборов тестов
describe
позволяет группировать связанные тесты для облегчения навигации и поддержания структурированности кода.
describe('Набор функций для манипуляций с числами', () => {
it('обрабатывает деление чисел без ошибок', () => {
// Производим деление и проверяем его
});
test('правильно вычисляет остаток от деления', () => {
// Работаем с остатком от деления
});
});
Выбор между it
и test
в describe
также основывается на личных предпочтениях в формулировании тестов.
Избегание проблем с исключением тестов
Если нужно временно исключить некоторые тесты из запуска или сосредоточиться на одном, Jest предлагает использовать xit()
и fit()
. Эти методы становятся непосредственной помощью, если вы столкнулись с проблемами в определенных тестах.
// Пропускаем тест, вызывающий ошибку
xit('в конечном итоге должен выполняться промис', () => {
// Вернусь к этому позже
});
// Фокусирование на конкретном тесте
fit('промисы иногда демонстрируют ошибки', () => {
// Очередное сломанное обещание.
});
Альтернативные способы для тех, кто предпочитает test
, — это test.skip
и test.only
.
Визуализация
Использование it
и test
в Jest предлагает две различных перспективы оформления тестов.
| Функция | Описание |
| ------- | -------- |
| `it` | Соответствует подходу BDD, благоприятен для сценариев |
| `test` | Универсальный стиль, подходит для любых случаев |
Вне зависимости от ваших предпочтений, результаты будут идентичными. Выберите тот вариант, который наиболее натурально согласуется с вашей тестовой стратегией. 🎨
Соблюдение единого стиля тестирования в больших командах
В командной работе важно достичь консенсуса относительно единого стиля тестов. Выбор между it
и test
может основываться на различных аспектах, включая привычки команды или специфику тестируемых фреймворков.
Внедрение правил для линтеров помогает обеспечить единство стиля кода и повышает его читаемость, что весьма облегчает процесс проведения код-ревью.
Полезные материалы
- Globals · Jest — официальная документация о применении
it
иtest
в Jest. - Обсуждение на Stack Overflow — дискуссии и мнения сообщества о выборе между
it
иtest
. - Ключевые особенности Jest – Унит-тестирование на JavaScript – YouTube — доступное видео с описанием использования
it()
иtest()
в Jest. - Шпаргалка по Jest – GitHub — справочник по ключевым командам Jest с примерами использования
it
иtest
. - Пишите тесты. Но не слишком много. В основном, интеграционные — статья с советами по выбору оптимальной стратегии тестирования.
- egghead.io — хотя данный ресурс и не связан непосредственно с Jest, он предлагает множество полезных уроков по актуальным темам в области программирования.