然后莫基托返回不起作用,但"when"有效



我正在使用mockito Spy测试一个类

@Spy UserRepository userRepositoryMock;

如果我用一个when表达式存根,它可以工作

when(userRepositoryMock.findById(anyString())).thenReturn(Optional.of(user1));

但我想了解为什么其他语法,doReturn不工作:

doReturn(Optional.of(user1)).when(userRepositoryMock.findById(anyString()));

using doReturn会输出以下错误信息

org.mockito.exceptions.misusing.UnfinishedStubbingException: 
Unfinished stubbing detected here:
-> at io.onq.web.controller.api.user.UserUnitTest.testUserlistOktaStateChange(UserUnitTest.java:110)
E.g. thenReturn() may be missing.

知道为什么会失败吗?

根据@Carlos的评论,当你使用doReturn()时,代码应该看起来像

Mockito.doReturn(activity).when(dao).getActivity("0001");

所以当我们检查你的代码时,我们会发现你遗漏了")"在spy/mock Object之后。因此,您的存根应该看起来像:

doReturn(Optional.of(user1)).when(userRepositoryMock).findById(anyString()));