android - Android Mockito.verify 说参数不同!打印相同的内容
问题描述
情况
我有一个Tracker
具有此方法的接口:
fun trackEvent(event: String, args: Bundle? = null)
我想验证,这个方法是用特定的event
. 被测试的内部对象使用对象调用此方法Bundle
。所有事件都指定为
companion object {
const val EVENT = "EVENT"
}
问题
测试因此验证而失败:
Mockito.verify(tracker).trackEvent(Tracker.EVENT)
带有消息:
论据不同!通缉:tracker.trackEvent("EVENT", null); ...
实际调用有不同的参数:tracker.trackEvent("EVENT", null); ...
有很多解决方案,它们正在使用
Mockito.eq()
, Mockito.refEq()
, ArgumentMatchers
,Captures
等。它们都不适合我,给出相同或NullPointerException
解决方案
对于那些将面临同样问题的人,解决方案是您需要
testImplementation "com.nhaarman:mockito-kotlin:1.5.0"
在build.gradle
文件中添加。更多信息,在这里
https://github.com/nhaarman/mockito-kotlin。
问题是,在Java
所有类中,默认情况下都是可以为空的,不像Kotlin
. 虽然 mockito 旨在Java
与Kotlin
.
所以,这个特定测试的解决方案
Mockito.verify(tracker).trackEvent(Tracker.EVENT)
是
Mockito.verify(tracker).trackEvent(eq(Tracker.ADD_TRANSACTION), any())
其中eq()
和any()
是 的函数com.nhaarman.mockito_kotlin
。
推荐阅读
- python - 如何控制 matplotlib.pyplot.imshow 中像素的颜色?
- python - 保存文件时,我的写入参数的 TypeError 必须是字符串
- reporting-services - SSRS 2019 自定义 CSS
- django - 无法在 django 视图中从 POST 检索数据
- javascript - 未知的自定义元素:
- 您是否正确注册了组件? - tableau-api - Tableau Server 不会加载
- javascript - Chrome 开发片段:javascript 平滑滚动缓动
- java - 在 Mockito 中,有什么方法可以模拟具有需要模拟的方法和需要测试的方法的类(而不是接口)?
- openai-gym - 改变网格中周期性出现的对象的速度
- docker - 创建的 Docker 容器进程未列出