Когда использовать unit-тесты?
Продвинутые темы
Unit-тесты используют для проверки отдельных единиц кода (функций, компонентов) в изоляции — прежде всего для чистой логики, утилит и переиспользуемых компонентов.
Когда писать unit-тесты
- Чистые функции и утилиты — форматирование, валидация, вычисления, редьюсеры. Идеальны: вход/выход, без зависимостей.
- Бизнес-логика — критичные алгоритмы, обработка данных.
- Переиспользуемые компоненты — базовый рендер, поведение по props.
- Хуки — кастомная логика.
- Крайние случаи и баги — тест, воспроизводящий баг, защищает от регрессий.
expect(formatPrice(1000)).toBe('1 000 ₽');
expect(reducer(state, action)).toEqual(nextState);Когда unit-тестов недостаточно
- Взаимодействие модулей → интеграционные тесты.
- Полный пользовательский сценарий → E2E (Playwright/Cypress).
- Сложная логика с внешними зависимостями — unit с моками менее ценен, чем интеграционный.
Пирамида тестирования
Много быстрых unit → меньше интеграционных → мало медленных E2E. Unit дают быструю обратную связь и точную локализацию ошибки.
Коротко для собеседования
Unit-тесты — для изолированной проверки функций, утилит, редьюсеров, хуков и базового поведения компонентов (быстрые, точная локализация). Для взаимодействия модулей — интеграционные, для сценариев — E2E. Много unit, мало E2E (пирамида).