Моя цель - протестировать приложение с помощью 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 с моим приложением. Их примеры не показывают, как ссылаться на репозиторий, хотя вносить изменения.