Dies ist die Testklasse:Warum diese Mockito nicht
@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 {}
Und das ist die userDetails
Umsetzung:
@Autowired
private UserRepository userRepository;
@Override
@Transactional
public UserDetails loadUserByUsername(String username) {
User user = (User) userRepository.findByMobile(username); // user is always null
Was ich erwarte, ist, wenn userRepository.findByMobile
genannt wird, sollte es die getUserByMobile
nennen Methode definiert in @Before
. Aber offensichtlich funktioniert die Mockito
Konfiguration nicht oder userRepository
nicht zu spotten. Was ist falsch und wie löst man es?