私はmockito spyを使いたいです。
次の両方の方法で戻り値を設定すると:
when(imagesSorterSpy.sortImages(imagesAsInsertionOrder, user)).thenReturn(imagesSorterSpy.sortImages(imagesAsInsertionOrder, user, fakeNowDate));
doReturn(imagesSorterSpy.sortImages(imagesAsInsertionOrder, user, fakeNowDate)).when(imagesSorterSpy).sortImages(imagesAsInsertionOrder, user);
戻り値が熱心に評価されていることがわかります
この「設定」行が実行されたときを意味します。
スパイにオンデマンドでのみ戻り値を評価させるにはどうすればよいですか?
「いつ」条件が満たされたときを意味します。
アップデート
@RobbyCornelissen のおかげで、私はこのコードを試しました:
when(imagesSorterSpy.sortImages(imagesAsInsertionOrder, user)).thenAnswer(new Answer() {
public Object answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
ImagesSorter mock = (ImagesSorter)invocation.getMock();
return mock.sortImages((List<Image>)args[0], (UserInfo)args[1], fakeNowDate);
}
});
しかし、それは役に立ちませんでした:
1) "when" 式がすぐに呼び出された。(要らない)
2) 最終的にコールバックは呼び出されませんでした。