我有一个问题,我没有在谷歌找到答案。我正在编写单元测试,我想提供一个参数匹配器,所以我可以模拟函数的响应。我只是打电话:
Mockito.`when`(
dataSource.sendPoke(Mockito.argThat({ argument -> true }))
).thenReturn(
Observable.just(CommonResponse())
)
我收到的所有内容都是错误的:
java.lang.IllegalStateException: Mockito.argThat({ argument -> true }) must not be null
我在Java中使用这种方法,一切正常。谁能告诉我如何在Kotlin中实现ArgumentMatcher?
答案 0 :(得分:1)
argThat
旨在用于验证,而不是用于存根。如果您想根据输入存根特定答案,请使用thenAnswer
,如下所示(使用mockito-kotlin
语法):
val mock: DataSource = mock {
on { sendPoke(any()) }.thenAnswer { Observable.just(it.arguments[0]) }
}
Mockito的普通Java语法要求你做
doAnswer { Observable.just(it.arguments[0]) }
.`when`(dataSource.sendPoke(any()))
IIRC。
答案 1 :(得分:0)
ok @Thomas Keller,mokito-kotlin
帮助了我。适合我的代码是:
whenever(dataSource.sendPoke(any()))
.thenReturn(Observable.just(CommonResponse()))
非常感谢您的帮助:)
PS。如果这不是最佳解决方案,请随时指出。