Тестирование React
Вопрос
Как ты тестируешь React-компоненты?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
Testing Library проверяет поведение, а не реализацию
запрос к узлам по роли и тексту, как это делает пользователь
не проверяем состояние и внутренние методы
асинхронность через findBy и waitFor, а не таймауты
сеть мокается на уровне запросов - msw, а не подмена fetch
пирамида: много юнитов, меньше интеграционных, единицы e2e
Что могут спросить следом
- Что такое act и почему о нём предупреждает консоль
- Как тестировать кастомный хук
- Почему снапшот-тесты чаще вредят
Разбор
Основной инструмент - Testing Library с принципом «тест видит то же, что
пользователь»: поиск по роли, метке, тексту, а не по классам и не по внутреннему состоянию.
Тест, который знает про useState, ломается на любом рефакторинге и ничего не гарантирует.
Асинхронность - через findBy* и waitFor, а не фиксированные задержки. Сеть удобнее
подменять на уровне протокола (msw), а не заглушкой fetch: так тест проверяет и то,
как формируется запрос.
Соотношение: много быстрых юнит-тестов на логику (утилиты, редьюсеры, хуки), умеренно интеграционных на сценарий экрана и единицы e2e на критические пути - регистрация, оплата.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.