Я пытаюсь создать фиктивный контроллер, но продолжаю получать сообщение об ошибке с аргументом Capturing. Он говорит, что хотел, но не вызывал. Я все еще не понимаю Mockito и Junit и то, как это должно работать.
ControllerMock
@Test
public void testAddUserController() throws Exception {
JSONArray userArray = new JSONArray();
JSONObject jsonObject = new JSONObject();
jsonObject.put("username", "User 1");
jsonObject.put("email", "[email protected]");
jsonObject.put("password", "password123");
jsonObject.put("address", "Address 1");
jsonObject.put("age", 12);
userArray.put(jsonObject);
mockMvc.perform(MockMvcRequestBuilders.post(BASE_URL + "/users").content(toString()).contentType(MediaType.APPLICATION_JSON_UTF8));
Mockito.verify(userService, Mockito.times(1))
.addUser(userCaptor.capture(), emailCaptor.capture(), passwordCaptor.capture(), addressCaptor.capture(), ageCaptor.capture());
Assert.assertEquals("User 1", userCaptor.getValue());
Assert.assertEquals("[email protected]", emailCaptor.getValue());
Assert.assertEquals("password123", passwordCaptor.getValue());
Assert.assertEquals("Address 1", addressCaptor.getValue());
Assert.assertEquals("12", ageCaptor.getValue());
}
UserService
boolean addUser(String username, String email, String password, String address, Integer age);
UserServiceImpl
@Override
public boolean addUser(String username, String email, String password, String address, Integer age) {
Optional<User> user = userRepository.findByUsernameAndEmail(username, email);
if (!user.isPresent()) {
User user1 = new User();
user1.setUsername(username);
user1.setEmail(email);
user1.setPassword(password);
user1.setAddress(address);
user1.setAge(age);
user1.setIsActive(true);
userRepository.save(user1);
return true;
} else {
return false;
}
}




напишите тест junit с помощью @Test и используйте Mockito для издевательства над HttpResponse
InputStream jsonResponse = createJsonResponse();
Mockito.when(mHttpClientMock.execute(Mockito.isA(HttpPost.class))).thenReturn(mHttpResponseMock);
Mockito.when(mHttpResponseMock.getStatusLine()).thenReturn(mStatusLineMock);
Mockito.when(mStatusLineMock.getStatusCode()).thenReturn(HttpStatus.SC_OK);
Mockito.when(mHttpResponseMock.getEntity()).thenReturn(mHttpEntityMock);
Mockito.when(mHttpEntityMock.getContent()).thenReturn(jsonResponse);