在mockito中,我希望模拟一个同时返回值并调用回调方法的方法。
例如,以下是服务方法:
如上例所示:回调在返回值之前被调用。这并不能正确测试异步回调。有没有办法使回调方法在返回值后被调用?
我知道可以使用argumentCaptor,但是是否有一种不需要手动调用回调的替代方法?
是否有一种结合了doAnswer(..)和thenReturn(..)的方法?
例如,以下是服务方法:
String fetchString(Callback<String> callback);
我希望在调用回调函数之前返回值。我研究了如何使用Mockito.doAnswer(..)
,但似乎无法想出如何使方法在返回语句之后调用回调函数。示例:
when(mockService.fetchString(any(Callback.class)).thenAnswer(
new Answer<String>() {
String answer(InvocationOnMock invocation) {
((Callback<String>) invocation.getArguments()[0]).onResult("callback string");
return "return string";
}
});
如上例所示:回调在返回值之前被调用。这并不能正确测试异步回调。有没有办法使回调方法在返回值后被调用?
我知道可以使用argumentCaptor,但是是否有一种不需要手动调用回调的替代方法?
是否有一种结合了doAnswer(..)和thenReturn(..)的方法?
ArgumentCaptor
来获取回调实例,并在需要时调用它。 - talexArgumentCaptor
,但只能在测试方法被调用后使用。我认为他想在测试方法仍在运行时调用回调函数。 - Maciej Kowalski