Урок 12: Тестирование, mock-объекты и швы
Когда логика вызывает часы, отправщик почты или базу данных напрямую — каждый тест зависит от реального мира: медленного, ненадёжного и иногда падающего только в полночь. В этом уроке мы открываем шов: маленький интерфейс, через который мы внедряем заместителя (подделку), и получаем тесты, которые в
Шов — это как настенная розетка: вы можете подключить настоящий прибор или тестовое устройство — а сама стена при этом никогда не меняется.
- Тестируемый дизайн (швы и mock-объекты)
- Скрывайте настоящие зависимости за маленькими интерфейсами, чтобы тесты могли внедрять заместителей и управлять каждым входом.
- шов — точка замены зависимости
- Место в коде, где поведение можно заменить извне — например, параметр конструктора, типизированный как интерфейс, — не редактируя логику.
- подделка (fake) — поддельная реализация для тестов
- Написанная вручную реализация интерфейса (вроде FakeClock), поведением которой тест полностью управляет — делая результаты детерминированными.