Java Mockito无法运行存根方法

Java Mockito无法运行存根方法,java,spring,mockito,Java,Spring,Mockito,我试图通过在传入字符串“john”时返回用户对象来存根类(springdatajpa存储库)的方法 发生的情况是,在userService中,当调用users.findByUsername(“john”)时,它总是返回null,而不是我定义的任何用户对象: when(users.findByUsername("john")) .thenReturn(any(User.class)); 当我在测试方法中放置断点并将用户与userService.users进行比较时,它们是相等的

我试图通过在传入字符串“john”时返回用户对象来存根类(springdatajpa存储库)的方法

发生的情况是,在userService中,当调用users.findByUsername(“john”)时,它总是返回null,而不是我定义的任何用户对象:

when(users.findByUsername("john"))
    .thenReturn(any(User.class));    
当我在测试方法中放置断点并将用户与userService.users进行比较时,它们是相等的

我不知道为什么会发生这种情况,可能是因为UserRepository只是一个接口

@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(类=ServiceTestContext.class)
公共类UserServiceImplTests{
@注射模拟
私有用户服务impl用户服务;
@嘲弄
私有用户存储库用户;
@试验
public void signupUser_已经存在username_userCreatedWithRandomGeneratedUsername(){
//..创建emailSignupCommand对象
何时(users.findByUsername(“john”))
.然后返回(任何(User.class));
userService.signupUser(emailSignupCommand);
User expectedUser=new User.Builder()
.withEmail(电子邮件)
.withPassword(密码)
.build();
//…验证码
}
}

pom版本


org.mockito
莫基托所有
1.9.5
方法不能返回“任何”用户实例。您必须告诉它返回给定的用户

any()
可以用作stubbed方法参数,例如:无论调用的ID是什么,我都希望您返回John:

when(users.findByUsername(any(String.class)))
        .thenReturn(new User("John");

谢谢你帮我解决了这个问题,但是,将返回值从任意对象更改为实际对象对我遇到的问题没有影响。那么你的存根可能不是以“john”作为参数调用的。我很确定它是以“john”作为参数调用的。通过调试和查看变量,我看到了一些异常消息。请参阅我在原始帖子中添加的屏幕截图。看来您一直在“thenReturn()”中使用匹配器,但正如我的回答所解释的,这是无效的。我认为您需要共享更多代码。“验证码”是什么样子的?与您的期望不同的路线在哪里?