【发布时间】:2020-03-12 12:13:10
【问题描述】:
我想在我的应用程序中测试 API 调用。因为 API 调用是异步的。我正在使用 mockito(verify 和 ArgumentCaptor)。
@Captor
lateinit var callbackCaptor: ArgumentCaptor<Callback<ResponseModel>>
@Test
fun testDetailsApiCall() {
val mock: MyRepository = mock()
verify(mock.getSomeDetails("xxx", "xxx", capture(callbackCaptor)))
}
MyRepository 内部的getSomeDetails 正在调用服务器 API 调用并通过 interface 回调发送回响应。
但是当我执行这个测试用例时,我得到了以下错误
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
3 matchers expected, 1 recorded:
-> at xxx.xxxx.testDetailsApiCall
This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));
For more info see javadoc for Matchers class.
如果你们能找出其中的问题,那将是非常有帮助的
【问题讨论】:
-
您是否尝试过使用
eq("xxx")而不仅仅是"xxx"?由于您使用的是捕获... -
@Demigod getDetails 方法需要字符串参数
标签: android asynchronous testing kotlin mockito