Инструментальное тестирование с Dagger2 - как ссылаться на поддельный репозиторий? - PullRequest
0 голосов
/ 19 марта 2020

Моя цель - протестировать приложение с помощью Espresso.

Активность на первом экране зависит от настроек, полученных из репозитория. Репозиторий проверяет, сохранил ли пользователь настройки местоположения в общих настройках. Если он имеет, он переходит к основному виду деятельности. Это та часть логики c, которую я пытаюсь протестировать.

Я хочу заменить поддельный репозиторий (HashMap, представляющий общие настройки) для достижения согласованности. Тесты запускаются и проходят, если хранилище пустое (базовое состояние). Однако я хочу проверить, будет ли приложение двигаться вперед, если местоположение сохранено.

Тестовый вопрос:

@Test
fun onLaunch_withLocationSaved_checkMainActivityIsShown() {
    fakeRepository.saveLocation("40,80")

    ActivityScenario.launch(FirstScreenActivity::class.java)
    onView(withText(R.string.welcome_message)).check(matches(not(isDisplayed())))
}

Как получить ссылку на fakeRepository, чтобы иметь возможность сохранять местоположение, из которого ViewModel будет читать?

Если он создан (который побеждает точку внедрения) следующим образом:

@Before
fun init() {
    fakeRepository = FakeSimpleRepository()
    fakeRepository.saveLocation("")
    viewModel = FirstScreenViewModel(fakeRepository)
}

Вьюмодель внедряется с другим объектом fakeRepository (я сравнил адреса с отладчиком).

Я следовал кодовым меткам Google и официальной документации по настройке Dagger с моим приложением. Их примеры не показывают, как ссылаться на репозиторий, хотя вносить изменения.

1 Ответ

0 голосов
/ 19 марта 2020

Этот блог освещает то, чего вы хотите достичь

Идея состоит в том, что вы должны переопределить свой модуль кинжала, чтобы ввести фиктивный объект. Затем вы создаете пользовательский класс бегуна для переопределения класса приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...