Издевательство над контроллером, добавляющим пользователя через JSON Post

Я пытаюсь создать фиктивный контроллер, но продолжаю получать сообщение об ошибке с аргументом 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;
    }

}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
65
1

Ответы 1

напишите тест 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);

Ссылка: https://dzone.com/articles/how-test-rest-api-junit

Другие вопросы по теме