Выбор ответа Senior Тестирование и pytest обновлено
Что плохого в избыточных моках
Вопрос
Тест подменяет пять внутренних методов сервиса и проверяет, что каждый вызван с нужными аргументами. Чем это плохо?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Тест проверяет реализацию и ломается при рефакторинге. Такой тест зеркалит код: переименовали внутренний метод или объединили два вызова, и тест красный, хотя поведение не изменилось.
Варианты ответа
- Моки работают медленнее настоящего кода сервиса
- pytest запрещает больше трёх моков в одном тесте
- Ничем, это лучший способ тестировать сервисы
- Тест проверяет реализацию и ломается при рефакторингеправильный ответ
Разбор
Такой тест зеркалит код: переименовали внутренний метод или объединили два вызова, и тест красный, хотя поведение не изменилось. Зато настоящую ошибку в логике между моками он не поймает. Моки хороши на внешних границах (HTTP, почта, время), а внутреннюю логику проверяют по результату и состоянию. Ограничений на число моков нет, а скорость не главное.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.