'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