Выбор ответа Junior Внедрение зависимостей спрашивают часто обновлено

DI и тесты

Вопрос

Почему view model, которая получает репозиторий через конструктор, легче тестировать?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: В тесте можно передать фейковый репозиторий с готовыми данными и проверить состояние без сети. Если view model сама создаёт репозиторий, тест потянет реальную сеть и базу, будет медленным и нестабильным.

Варианты ответа

  1. С DI тесты view model не нужны: граф проверяется при сборке, и ошибки ловятся компилятором
  2. Конструктор с зависимостями позволяет фреймворку автоматически сгенерировать моки и тесты
  3. Только через конструктор тест может создать view model и вызвать её методы без UI
  4. В тесте можно передать фейковый репозиторий с готовыми данными и проверить состояние без сетиправильный ответ

Разбор

Если view model сама создаёт репозиторий, тест потянет реальную сеть и базу, будет медленным и нестабильным. Внедрение через конструктор по протоколу или интерфейсу позволяет подставить фейк: вернуть ошибку, пустой список, задержку. Тесты по-прежнему нужно писать.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.