Создание рабочего NavController для тестирования
Решил протестировать отдельный фича модуль, модуль в свою очередь имеет файл
навигационный файл
<fragment
android:id="@+id/nav_file_search"
android:name="file_search.FileSearchFragment"
android:label="@string/fragment_file_search_name" >
<action
android:id="@+id/action_take_photo_from_camera"
app:destination="@id/picker_photo_camera" />
<action
android:id="@+id/action_take_photo_from_gallery"
app:destination="@id/picker_photo_gallery" />
</fragment>
Так же есть тест
class FileSearchTest: TestCase(), KoinTest {
@Test
fun openBottom() = before {
startKoin { modules(listOf(testModule)) }
val mockNavController = mock(NavController::class.java)
launchFragmentInContainer<FileSearchFragment>(
themeResId = R.style.AppTheme
).onFragment{ fragment ->
Navigation.setViewNavController(fragment.requireView(), mockNavController)
}
}.after {
}.run {
step("Open bottom pickerBar"){
FileSearchScreen {
loadButton.apply {
isVisible()
click()
}
}
}
step("Check visible bottom bar") {
BottomPhotoPickerBarScreen {
btnChooseFromGallery.isVisible()
btnChooseFromGallery.click()
}
}
step("take first item") {
GalleryScreen {
imgSend.isVisible()
imgSend.click()
}
}
step("isVisible expend layout") {
FileSearchScreen {
expandedLayout.isVisible()
}
}
}
}
внутри step "Check visible bottom bar"
BottomPhotoPickerBarScreen {
btnChooseFromGallery.isVisible()
btnChooseFromGallery.click()
}
вызывается findNavController().navigate(viewAction.navDirections.actionId) на стороне фрагменте, но нужный другой фрагмент не открывается
Как можно построить навигацию во время ui теста, если это фича модуль который ничего не знает о MainActivity в который есть HavHostFragment