情况
我有一个界面Tracker
其中有这个方法:
fun trackEvent(event: String, args: Bundle? = null)
我想验证是否使用特定的调用此方法event
。
被测试的内部对象调用此方法Bundle
目的。
所有事件都指定为
companion object {
const val EVENT = "EVENT"
}
问题
测试失败并进行此验证:
Mockito.verify(tracker).trackEvent(Tracker.EVENT)
带有消息:
论据不同!通缉:
tracker.trackEvent("事件", null);
...
实际调用有不同的参数:
tracker.trackEvent("事件", null);
...
解决方案有很多,主要是使用Mockito.eq()
, Mockito.refEq()
, ArgumentMatchers
, Captures
等等。他们都不为我工作,给予相同或NullPointerException
对于那些面临同样问题的人,解决方案是您需要添加testImplementation "com.nhaarman:mockito-kotlin:1.5.0"
在你的build.gradle
文件。更多信息,请点击此处https://github.com/nhaarman/mockito-kotlin https://github.com/nhaarman/mockito-kotlin.
事情是在Java
默认情况下,所有类都可以为 null,这与Kotlin
。虽然mockito被设计为与Java
,上面的库添加了使用 Mockito 的支持Kotlin
.
所以,这个特定测试的解决方案
Mockito.verify(tracker).trackEvent(Tracker.EVENT)
is
Mockito.verify(tracker).trackEvent(eq(Tracker.ADD_TRANSACTION), any())
where eq()
and any()
是函数com.nhaarman.mockito_kotlin
.
更多信息请点击这里:https://stackoverflow.com/a/38722935/3569545 https://stackoverflow.com/a/38722935/3569545
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)