我正在使用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()));