[英]Test Navigation Component with SafeArgs and Mockito
我正在尝试测试片段 A 是否通过导航组件的 navigate(NavDirection) 方法调用片段 B,并使用 Mockito。 问题是从片段 A 到片段 B 的操作具有安全的参数(确切地说是一个对象),并且在尝试执行以下操作时:
verify(navController).navigate(FragmentADirections.actionFragmentAToFragmentB(payload))
Mockito 抛出“论据不同!” 错误,调用之间的区别在于payload
的实例。 我在这里所做的是,这个片段 A 的(模拟)视图模型接收启动片段的活动的额外意图(使用 launchFragmentInHiltContainer 辅助方法),并从中捕获有效负载对象(然后在FragmentADirection 的动作方法的参数)。 这是创建“其他实例”的时刻,但我不需要 Mockito 来验证实例的相等性,而我只需要检查片段 A 调用是否正确导航到片段 B。
有没有办法使用 Mockito 来实现这一点?
代码流程:
PS:我正在使用 Hilt,并且我正在以这种方式初始化我的 navController 模拟实例:
private val navController = mock(NavController::class.java)
虽然我没有找到一种方法让 Mockito 检查有效负载数据而不是实例之间的差异,但我还是按照@ianhanniballake 的建议再次尝试使用TestNavHostController
,当我重构代码时,我注意到当我在视图中检查文本时,而不是使用R.string
我使用的是R.id
,这导致测试失败。 现在我已经纠正了这一点,一切似乎都很好。
因此,对于这种情况,请在查看navController.currentDestination?.id
值之前检查您是否进行了错误的断言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.