Я создал элемент LoginFragment, который перемещается к другому при успешном входе в систему с использованием компонента архитектуры навигации.Работает нормально, но проверка на это не проходит.Это довольно близкое зеркало примера GithubBrowser, и мой тест очень похож на clickRepo
тест здесь , за исключением того, что я тестирую, что новая страница загружается при публикации успешного ресурса вместощелкните.
Ошибка:
Wanted but not invoked:
navController.navigate(
app.ui.login.LoginFragmentDirections$ShowSelectMerchant@377f3c27
);
LoginFragmentTest.kt
@Test
fun success(){
val user = TestUtil.createUser(email)
userData.postValue(Resource.success(user))
System.out.println("Test NavController Hash: " + testFragment.navController.hashCode())
verify(testFragment.navController).navigate(LoginFragmentDirections.showSelectMerchant().matcher())
}
LoginFragment.kt
override fun openSelectMerchantFragment() {
System.out.println("Real NavController Hash: " + navController().hashCode())
navController().navigate(LoginFragmentDirections.showSelectMerchant())
}
openSelectMerchantFragment
вызывается, когдаУспешный ресурс публикуется в реальных данных пользователя.Есть ли очевидная причина, по которой тест не пройден?
Я вижу, что макет навигационного контроллера тестового фрагмента и тот, который вызывается в самом фрагменте, имеют одно и то же значение хэша, поэтому я уверен, что это непроблема с тем, как я высмеял активность, фрагмент или навигационный контроллер.Я также ясно вижу, что функция navigate () определенно вызывается.