How to get Fragment Manager in compose test

102 Views Asked by At

I am writing test for below Compose navigation.

compose(Page) {
    val manager = navController.appCompatActivity?.supportFragmentManager

    if (manager != null) {
        // Create instance of Fragmnet
    } else {
        // pop backstack
    }

    // Show compose screen
}

When I am navigating to destination using compose test getting null on supportFragmentManager

Test

    @get:Rule
    val rule = createComposeRule()

   @Before
    fun setupAppNavHost() {
        rule.setContent {
            navController = TestNavHostController(LocalContext.current)
            navController.navigatorProvider.addNavigator(ComposeNavigator())
            ComposeNavHost(navController = navController, DefaultDestination)
        }
    }


    @Test
    fun someTest() {

        val viewModel = mock<ViewModel> {
            on { shouldShowChallenge() } doReturn MutableLiveData(Resource.Success(true))
        }
        DaggerHelper.setViewModel(viewModel)

        navController.navigate(REQUEST)

        Assert.assertEquals(REQUEST, navController.currentBackStackEntry?.destination?.route)

        rule.onNodeWithTag(DROPDOWN).assertExists()
    }
0

There are 0 best solutions below