'How to access viewModel that is created inside compose navigation destination in instrumented test
If I create viewModel outside NavHost component then I can access this viewModel in my instrumented tests. For example:
@Composable
fun Navigation(myViewModel: MyViewModel = hiltViewModel()) {
NavHost(...) {
composable("example1") {
...
}
}
}
And view model e.g.:
@HiltViewModel
class MyViewModel @Inject constructor() : ViewModel() {
...
}
I can access this viewModel in Instrumented test like this:
@RunWith(AndroidJUnit4::class)
@HiltAndroidTest
class ExampleInstrumentedTest {
@get:Rule(order = 0)
val hiltRule = HiltAndroidRule(this)
@get:Rule(order = 1)
val composeRule = createAndroidComposeRule<MainActivity>()
@Test
fun exampleTest() {
// accessing view model
val myViewModel = composeRule.activity.viewModels<MyViewModel>().value
...
}
}
But how can I access viewModel in my instrumented tests when it's created inside NavHost?
@Composable
fun Navigation() {
NavHost(...) {
composable("example2") {
Example2Screen()
}
}
}
@Composable
fun Example2Screen(myViewModel: MyViewModel = hiltViewModel()) {
...
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
