Типы test doubles
- Stub — возвращает заданные значения. Без проверки вызовов
- Mock — дополнительно проверяет, что определённые методы были (или не были) вызваны
- Spy — записывает вызовы, но делегирует к реальной реализации
- Fake — упрощённая реальная реализация (in-memory репозиторий)
- Dummy — объект-заглушка, передаётся но не используется
Когда не мокать
Мокать следует внешние зависимости (email, S3, платёжная система), а не собственный код. Если вы мокаете свои же классы — это сигнал, что архитектура требует рефакторинга.