我试图通过在传入字符串“john”时返回User对象来存根类的方法(spring-data-jpa存储库)。
当user.findByUsername(“john”)被调用时,在userService中发生的事情总是返回null而不是我所定义的任何User对象:
when(users.findByUsername("john"))
.thenReturn(any(User.class));
当我在测试方法中放置断点并将用户与userService.users进行比较时,它们是相同的。
我不知道为什么会发生这种情况,因为UserRepository只是一个界面?
@RunWith(MockitoJUnitRunner.class)
@ContextConfiguration(classes = ServiceTestContext.class)
public class UserServiceImplTests {
@InjectMocks
private UserServiceImpl userService;
@Mock
private UserRepository users;
@Test
public void signupUser_alreadyExistingUsername_userCreatedWithRandomGeneratedUsername() {
// .. creation of emailSignupCommand Object
when(users.findByUsername("john"))
.thenReturn(any(User.class));
userService.signupUser(emailSignupCommand);
User expectedUser = new User.Builder()
.withEmail(EMAIL)
.withPassword(PASSWORD)
.build();
// ... verification code
}
}
pom version
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.9.5</version>
</dependency>
答案 0 :(得分:1)
一种方法无法返回&#34;任何&#34;用户实例。你必须告诉它返回给定的用户。
any()
可以用作存根方法参数,例如:无论您使用哪个ID,我都希望您返回John:
when(users.findByUsername(any(String.class)))
.thenReturn(new User("John");