Выбор ответа Junior Внедрение зависимостей спрашивают часто обновлено
DI и тесты
Вопрос
Почему view model, которая получает репозиторий через конструктор, легче тестировать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: В тесте можно передать фейковый репозиторий с готовыми данными и проверить состояние без сети. Если view model сама создаёт репозиторий, тест потянет реальную сеть и базу, будет медленным и нестабильным.
Варианты ответа
- С DI тесты view model не нужны: граф проверяется при сборке, и ошибки ловятся компилятором
- Конструктор с зависимостями позволяет фреймворку автоматически сгенерировать моки и тесты
- Только через конструктор тест может создать view model и вызвать её методы без UI
- В тесте можно передать фейковый репозиторий с готовыми данными и проверить состояние без сетиправильный ответ
Разбор
Если view model сама создаёт репозиторий, тест потянет реальную сеть и базу, будет медленным и нестабильным. Внедрение через конструктор по протоколу или интерфейсу позволяет подставить фейк: вернуть ошибку, пустой список, задержку. Тесты по-прежнему нужно писать.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.