java Mockito thenReturn不工作,但“当”工作

dba5bblo  于 2023-04-04  发布在  Java
关注(0)|答案(1)|浏览(137)

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

@Spy UserRepository userRepositoryMock;

如果我用when表达式将其存根化,它就可以工作

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

但是我想知道为什么另一个语法doReturn不起作用:

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

使用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.

为什么会失败呢?

nbysray5

nbysray51#

根据@卡洛斯的评论,当您使用doReturn()时,代码应该如下所示

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

所以当我们检查你的代码时,我们看到你在spy/mock Object后面漏掉了“)”。所以你的存根应该是这样的:

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

相关问题