Выделите компактную часть результата, которая действительно является контрактом.
Зачем
Зачем это нужно
Контролируйте время и случайность либо проверяйте их отдельными assertions.
Прочитайте diff перед обновлением эталона и сохраните чувствительность к дефектам.
Вопросы
Частые вопросы
Как задать пример нестабильного снимка?
«Учебный JSON заказа содержит случайный id, текущее created_at и status=new. Повтор без изменения логики должен проходить, а status=paid — падать». Попросите два варианта: фиксированные зависимости и точные matchers для динамических полей. Затем проверьте отсутствие даты: выбранная нормализация не должна позволять пропустить обязательное поле только потому, что его значение меняется между запусками теста.
Когда лучше заменить snapshot обычными проверками?
Когда важны несколько признаков поведения, а снимок содержит сотни строк посторонней структуры. Например, доступное имя кнопки и её disabled-состояние понятнее проверить прямо. Попросите перечислить защищаемые свойства до сокращения снимка. Маленький snapshot остаётся полезен для стабильного формата, но не заменяет проверку взаимодействия, сохранения данных и результата действия пользователя в интерфейсе приложения.
Можно ли автоматически обновлять все снимки?
Только если каждое изменение результата уже рассмотрено и признано ожидаемым в вашей процедуре. Само обновление не отличает исправление от регрессии. Попросите сгруппировать diff на шум времени, перестановку и смысловое изменение, затем проверьте последнюю группу. Автообновление эталона при любом падении делает тест неспособным удерживать прежний контракт и превращает его в запись текущего поведения без проверки.
Как проверять стабильность после правки?
Повторите тест с разными реальными моментами запуска и убедитесь, что контролируемый источник времени сохраняет ожидаемый результат. Затем намеренно измените значимое поле в учебной копии: тест должен отказать. Енотик может предложить структуру проверок, но не подтверждает ваш прогон. Укажите версию Jest и сериализатор, поскольку формат снимка и доступные matchers зависят от установленного инструментария проекта.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.