如何使用图中范围内的 ViewModel 测试片段
How to test a Fragment with a ViewModel scoped in a graph
我在 Android 上使用 navGraphViewModels
ViewModel 范围界定,当我实施片段测试时,我什至无法开始测试。
我使用 mockito 模拟 NavigationController
并使用 documentation suggested aproach 和 fragmentScenario
。当尝试创建抛出异常的 ViewModel 时,问题就来了,因为 NavController#getBackStackEntry
没有被模拟,我不能模拟它,因为 NavController
是最终的 class.
我如何测试使用范围限定为导航图的 ViewModel?
经过很多时间我找到了答案。
您应该将片段 NavController
更改为您创建并更改的片段 ViewModelStore
。在 Android 源代码的 test 中可以找到这方面的示例。
val scenario = launchFragmentInContainer<TestVMFragment>()
navController.setViewModelStore(ViewModelStore())
scenario.onFragment { fragment ->
Navigation.setViewNavController(fragment.requireView(), navController)
}
}
我在 Android 上使用 navGraphViewModels
ViewModel 范围界定,当我实施片段测试时,我什至无法开始测试。
我使用 mockito 模拟 NavigationController
并使用 documentation suggested aproach 和 fragmentScenario
。当尝试创建抛出异常的 ViewModel 时,问题就来了,因为 NavController#getBackStackEntry
没有被模拟,我不能模拟它,因为 NavController
是最终的 class.
我如何测试使用范围限定为导航图的 ViewModel?
经过很多时间我找到了答案。
您应该将片段 NavController
更改为您创建并更改的片段 ViewModelStore
。在 Android 源代码的 test 中可以找到这方面的示例。
val scenario = launchFragmentInContainer<TestVMFragment>()
navController.setViewModelStore(ViewModelStore())
scenario.onFragment { fragment ->
Navigation.setViewNavController(fragment.requireView(), navController)
}
}