Выбор ответа Senior Тестирование и pytest обновлено

Что плохого в избыточных моках

Вопрос

Тест подменяет пять внутренних методов сервиса и проверяет, что каждый вызван с нужными аргументами. Чем это плохо?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Тест проверяет реализацию и ломается при рефакторинге. Такой тест зеркалит код: переименовали внутренний метод или объединили два вызова, и тест красный, хотя поведение не изменилось.

Варианты ответа

  1. Моки работают медленнее настоящего кода сервиса
  2. pytest запрещает больше трёх моков в одном тесте
  3. Ничем, это лучший способ тестировать сервисы
  4. Тест проверяет реализацию и ломается при рефакторингеправильный ответ

Разбор

Такой тест зеркалит код: переименовали внутренний метод или объединили два вызова, и тест красный, хотя поведение не изменилось. Зато настоящую ошибку в логике между моками он не поймает. Моки хороши на внешних границах (HTTP, почта, время), а внутреннюю логику проверяют по результату и состоянию. Ограничений на число моков нет, а скорость не главное.

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

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

Термины по теме