我想使用 mockito 间谍。
当我通过以下两种方式设置返回值时:
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)最终没有调用回调。