Что такое snapshot-тесты, и в чём их плюсы и минусы?
Unit и компонентные тесты
Snapshot-тест сохраняет вывод (разметку компонента, результат функции) в файл и при следующих запусках сравнивает с ним.
Плюсы
- Быстро фиксирует результат, особенно для больших структур: конфиги, сгенерированный код, сообщения об ошибках.
- Видно любое непреднамеренное изменение.
Минусы
- Большие снапшоты никто не читает: при падении разработчик просто нажимает «обновить».
- Тест хрупкий: меняется класс или порядок атрибутов, и он падает, хотя поведение прежнее.
- Не объясняет, что именно должно быть правильным.
Когда уместны
Маленькие, осмысленные снапшоты: форма ошибки, структура ответа, иконка. Для интерфейса лучше проверять поведение явными ожиданиями.
expect(formatPrice(1234.5)).toMatchInlineSnapshot(`"1 234,50 ₽"`);Коротко для собеседования
Снапшоты хороши для небольших стабильных значений и плохи для больших деревьев разметки. Основная проверка UI — явные утверждения о поведении.