Ответ вслух Junior Тестирование обновлено

Тестирование React

Вопрос

Как ты тестируешь React-компоненты?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Основной инструмент - Testing Library с принципом «тест видит то же, что пользователь»: поиск по роли, метке, тексту, а не по классам и не по внутреннему состоянию. Тест, который знает про useState, ломается на любом рефакторинге и ничего не гарантирует.

Что должно прозвучать в ответе

  • Testing Library проверяет поведение, а не реализацию

  • запрос к узлам по роли и тексту, как это делает пользователь

  • не проверяем состояние и внутренние методы

  • асинхронность через findBy и waitFor, а не таймауты

  • сеть мокается на уровне запросов - msw, а не подмена fetch

  • пирамида: много юнитов, меньше интеграционных, единицы e2e

Что могут спросить следом

  • Что такое act и почему о нём предупреждает консоль
  • Как тестировать кастомный хук
  • Почему снапшот-тесты чаще вредят

Разбор

Основной инструмент - Testing Library с принципом «тест видит то же, что пользователь»: поиск по роли, метке, тексту, а не по классам и не по внутреннему состоянию. Тест, который знает про useState, ломается на любом рефакторинге и ничего не гарантирует.

Асинхронность - через findBy* и waitFor, а не фиксированные задержки. Сеть удобнее подменять на уровне протокола (msw), а не заглушкой fetch: так тест проверяет и то, как формируется запрос.

Соотношение: много быстрых юнит-тестов на логику (утилиты, редьюсеры, хуки), умеренно интеграционных на сценарий экрана и единицы e2e на критические пути - регистрация, оплата.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.