【发布时间】:2017-03-21 01:51:11
【问题描述】:
这是测试类:
@MockBean
private UserRepository userRepository;
@Before
public void beforeClass() {
String mobile;
when(this.userRepository.findByMobile(Mockito.anyString())).thenAnswer(new Answer<User>() {
@Override
public User answer(InvocationOnMock invocation) throws Throwable {
Object[] args = invocation.getArguments();
return MockData.getUserByMobile((String) args[0]);
}
});
}
@Test
@WithUserDetails(value = MockData.CUSTOMER_USERNAME, userDetailsServiceBeanName = "customizedUserDetailsService")
public void testAdd() throws Exception {}
这是userDetails 的实现:
@Autowired
private UserRepository userRepository;
@Override
@Transactional
public UserDetails loadUserByUsername(String username) {
User user = (User) userRepository.findByMobile(username); // user is always null
我期望的是当userRepository.findByMobile被调用时,它应该调用@Before中定义的getUserByMobile方法。但显然Mockito 配置不起作用或userRepository 无法模拟。出了什么问题以及如何解决?
【问题讨论】:
标签: spring-mvc mockito