とモック両方の戻り値、私はいくつかの値を返し、また、例えば、コールバック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";
}
});
上記の例のように、値が返される前にコールバックが呼び出されます。これは、非同期コールバックを適切にテストしません。値が返された後にコールバックメソッドを呼び出す方法はありますか?
私はここで引数のキャプチャを使用できることを知っていますが、手動でコールバックを呼び出す必要はありません。
doAnswer(..)
とthenReturn(..)
の組み合わせの何か?
使用 'ArgumentCaptor' 。 – talex
@Talex 'ArgumentCaptor'を使うことができますが、テスト対象のメソッドが呼び出された後でなければなりません。私は彼がテスト中のメソッドがまだ実行されている間、そのコールバックを呼び出すと思うと思います。 –
彼は特に、 "値が返された直後にコールバックメソッドが呼び出される"と述べています。 – talex