Знаком ли с концепцией юнит тестирования
Что проверяют
Писали ли вы тесты сами или только слышали о них, и понимаете ли, что во фронтенде считать «юнитом». Следом обычно просят рассказать, как вы тестируете компонент с запросом к API и что делаете с моками.
Как отвечать
Коротко определение: юнит-тест проверяет небольшой кусок кода в изоляции, быстро и без реальной сети, браузера и бэкенда. Во фронтенде это чистые функции (форматтеры, валидаторы, селекторы), кастомные хуки и компоненты, которые проверяют по поведению.
Дальше стек, который вы реально использовали:
- раннер: Vitest в проектах на Vite, Jest там, где он исторически прижился. API у них почти совпадает:
describe,it,expect, моки черезvi.fn()илиjest.fn(); - окружение: jsdom или happy-dom вместо настоящего браузера. Всё, что упирается в раскладку и реальный рендер, уходит в e2e на Playwright;
- компоненты: React Testing Library и
@testing-library/user-event. Элементы ищут так, как их видит пользователь:getByRole('button', { name: 'Сохранить' }), а не по классам; - сеть: MSW перехватывает запросы и отдаёт заготовленные ответы, поэтому компонент работает как обычно и не знает, что его тестируют.
Покажите принципы: схема «подготовка, действие, проверка», один тест на одно поведение, тесты не зависят от порядка запуска. Покрытие это ориентир, а не цель: 100% строк не гарантирует, что проверены граничные случаи.
И обязательно свой пример: что покрывали, какой баг тест поймал до релиза, как тесты гоняются в CI. Если в коммерческих проектах тестов не было, скажите прямо и покажите пет-проект или то, как покрыли бы конкретный компонент. Это честнее и убедительнее общих слов.
Где спотыкаются
Тестируют детали реализации: внутренний state, имена классов, вызовы приватных функций. Такой тест падает при любом рефакторинге и не ловит реальные баги.
Мокают всё подряд, включая сам тестируемый модуль, и в итоге проверяют собственные моки.
Пишут тесты, не понимая поведения языка. Классический пример: ожидание, что add('1', 2) вернёт 3, хотя в JavaScript результатом будет строка '12'.