我有一个依赖于“now”Date对象的方法。如何使用mockito间谍来重定向方法调用?
我想为它编写一个单元测试。
所以我想注入一个假的固定“现在”日期(使测试确定)。
我试图注入间谍这样的:
private ImagesSorter setServerWithSpyImageSorter(User user, List imagesAsInsertionOrder, Date fakeNowDate) throws IOException {
ImagesSorter imagesSorter = spy(new ImagesSorter());
when(imagesSorter.sortImages(imagesAsInsertionOrder, user)).thenReturn(imagesSorter.sortImages(imagesAsInsertionOrder, user, fakeNowDate));
//doReturn(imagesSorter.sortImages(imagesAsInsertionOrder, user, fakeNowDate)).when(imagesSorter).sortImages(imagesAsInsertionOrder, user);
server = VenueServerImplBuilder.create().withImagesSorter(imagesSorter).build();
server.init();
return imagesSorter;
}
,但它不工作。
1)当我使用doReturn(imagesSorter.sortIm..
时,热切地进行了评估。我不希望发生这种情况。我能避免这种情况吗?
2)当我注释掉doReturn(..
和使用when(imagesSorter.sor
我得到了以下错误:
org.mockito.exceptions.misusing.UnfinishedStubbingException:
Unfinished stubbing detected here:
E.g. thenReturn() may be missing.
Examples of correct stubbing:
when(mock.isOk()).thenReturn(true);
when(mock.isOk()).thenThrow(exception);
doThrow(exception).when(mock).someVoidMethod();
Hints:
1. missing thenReturn()
2. you are trying to stub a final method, you naughty developer!
你会如何代码我想干什么?
该链接是破碎的队友。 – Ali 2017-08-24 00:25:14
感谢您的支持,现在链接已更新 – luboskrnac 2017-08-24 10:14:28