【发布时间】:2018-11-01 13:43:29
【问题描述】:
目前,我在使用 mockito 库时遇到了一些问题……更确切地说,我无法将 userRepository bean 注入到我的模拟服务中。对于依赖注入,我使用的是 Spring Boot。下面是一些代码示例:
@Service
public class UserService {
@Autowired private TokenService tokenService;
@Autowired private UserRepository userRepository;
public User updateUser(User user) {
validateUser(user); // can throw some validation errors
createToken(user); // creates token to my user
return userRepository.save(user);
}
}
在我的测试方法中,我想在用户更新之前跳过验证和令牌创建。
UserService userService = mock(UserService.class);
doNothing(userService).validateUser(any());
doNothing(userService).createToken(any());
所以当我调用updateUser方法时,我的测试方法出现了问题,它失败了,因为我的userRepository没有被注入(NullPointerException)。 我尝试使用@Mock 和@InjectMocks,但这些注释用于注入模拟。如何将真正的 bean 注入到我的模拟中?这可能使用mockito吗? 谢谢。
【问题讨论】:
-
你为什么要注入一个真正的bean?
-
在我的测试中我需要将它保存到数据库中,这就是为什么我需要 userRepository bean。
-
doNothing(userService).validateUser(any());是如何编译的?在 mockito 1.9.5 和 2.0.2 版本中,您只有一个Stubber Mockito::doNothing()方法
标签: java unit-testing mockito javabeans code-injection