Я получаю эту ошибку:
IllegalStateException: просмотр android.widget.LinearLayout {649700d
В.Е ...... ...... я. 0,0-0,0} не имеет установленного NavController
Но это происходит только на эспрессо-тестах. Код, где происходит сбой, обрабатывает onBackPressed с моим фрагментом:
val navController = Navigation.findNavController(view)//this line here
requireActivity().onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
override fun handleOnBackPressed() {
navController.popBackStack(R.id.homeFragment, false)
}
})
Это мой эспрессо-тест:
@Test
fun testBackButton() {
val mockNavController = mock(NavController::class.java)
settingsFragmentScenario = launchFragmentInContainer()
settingsFragmentScenario.onFragment {
Navigation.setViewNavController(it.requireView(), mockNavController)
}
performClickOnViews(android.R.id.home)
verify(mockNavController).navigate(R.id.home)
}
Если я удаляю свой код во фрагменте, тесты запускаются без каких-либо ошибок (за исключением того, что я утверждаю неправильно)
Я проверил: IllegalStateException: Link не имеет установленного NavController , но его / ее проблема не такая, как у меня.
PS: в рабочем коде эта строка не падает