2
在的Mockito,我需要模擬返回一些值的方法,也有調用回調的Mockito:模擬與回調方法都返回值
例如,這裏是服務方法:
String fetchString(Callback<String> callback);
我希望返回值在調用回調之前發生。我看着使用Mockito.doAnswer(..)
,但似乎無法弄清楚如何使該方法在return語句後調用回調。例如:
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'獲得回調的情況下,當你需要它調用它。 – talex
@Talex'ArgumentCaptor'可以被使用,但只有在被調用的方法被調用之後。我認爲他希望在被測方法仍在運行時調用該回調。 –
他特別聲明「返回值後立即調用回調方法」。 – talex