PassFront
  1. PassFront
  2. База знаний
  3. Unit и компонентные тесты

Что такое snapshot-тесты, и в чём их плюсы и минусы?

Unit и компонентные тесты

Snapshot-тест сохраняет вывод (разметку компонента, результат функции) в файл и при следующих запусках сравнивает с ним.

Плюсы

  • Быстро фиксирует результат, особенно для больших структур: конфиги, сгенерированный код, сообщения об ошибках.
  • Видно любое непреднамеренное изменение.

Минусы

  • Большие снапшоты никто не читает: при падении разработчик просто нажимает «обновить».
  • Тест хрупкий: меняется класс или порядок атрибутов, и он падает, хотя поведение прежнее.
  • Не объясняет, что именно должно быть правильным.

Когда уместны

Маленькие, осмысленные снапшоты: форма ошибки, структура ответа, иконка. Для интерфейса лучше проверять поведение явными ожиданиями.

expect(formatPrice(1234.5)).toMatchInlineSnapshot(`"1 234,50 ₽"`);

Коротко для собеседования

Снапшоты хороши для небольших стабильных значений и плохи для больших деревьев разметки. Основная проверка UI — явные утверждения о поведении.

Другие вопросы раздела