gpt4 book ai didi

Android 测试 - 如何验证 navController.currentDestination.arguments?

转载 作者:行者123 更新时间:2023-12-03 23:34:07 25 4
gpt4 key购买 nike

我正在尝试使用 Espresso 和导航组件验证传递给我的新 fragment 的数据。
我从 here 中获取了一个示例简化这个问题。

@Test
fun testNavigationToInGameScreen() {
// Create a TestNavHostController
val navController = TestNavHostController(
ApplicationProvider.getApplicationContext())
navController.setGraph(R.navigation.trivia)

// Create a graphical FragmentScenario for the TitleScreen
val titleScenario = launchFragmentInContainer<TitleScreen>()

// Set the NavController property on the fragment
titleScenario.onFragment { fragment ->
Navigation.setViewNavController(fragment.requireView(), navController)
}

// Verify that performing a click changes the NavController’s state
onView(ViewMatchers.withId(R.id.play_btn)).perform(ViewActions.click())
assertThat(navController.currentDestination?.id).isEqualTo(R.id.in_game)

// HERE IS WHERE I'M TRYING TO VALIDATE ARGUMENTS
val currentDestinationArgs = navController.currentDestination.arguments
val expectedArguments = bundleOf(ARG_A to true)

assertEquals(currentDestinationArgs, expectedArguments)
}
我不知道如何转换 currentDestinationArgs用于验证的 bundle currentDestinationArgs . currentDestinationArgs字段是 MutableMap<String, NavArgument>据我所知。
有人想出如何测试这种东西吗?提前致谢。

最佳答案

currentDestination不是正确的 API - 返回 NavDestination从代表当前目的地的图表中。
你真正想看的是backStack :

// Get the arguments from the last destination on the back stack
val currentDestinationArgs = navController.backStack.last().arguments

// Use the Truth extension on Bundle from androidx.test.ext:truth:1.3.0-rc01
assertThat(currentDestinationArgs).bool(ARG_A).isTrue()

关于Android 测试 - 如何验证 navController.currentDestination.arguments?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63123807/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com