Как создать репозиторий так, чтобы в тестах можно было подменить реальное подключение к Postgres на мок?

Бизнес-сервис должен зависеть от узкого интерфейса репозитория, а реализацию получать через конструктор. В unit-тесте передают fake или mock, а не реальное подключение.

Короткий ответ

Что ответить на собеседовании

Бизнес-сервис должен зависеть от узкого интерфейса репозитория, а реализацию получать через конструктор. В unit-тесте передают fake или mock, а не реальное подключение.

Подробный разбор

Ответ с пояснениями

Бизнес-сервис должен зависеть от узкого интерфейса репозитория, а реализацию получать через конструктор. В unit-тесте передают fake или mock, а не реальное подключение.

Например, интерфейс FindUser(ctx, id) описывает нужную операцию, PostgresRepository выполняет SQL, а fake возвращает заранее заданный результат. SQL-логику отдельно проверяют интеграционным тестом на изолированной БД. Подмена репозитория не доказывает корректность настоящего запроса.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее