Тестирование метода post класса контроллера, когда его типом возврата является Response Entity - PullRequest
0 голосов
/ 28 октября 2018

Код ниже описывает тестирование метода post с использованием testng и mockito.Я получаю сообщение об ошибке в строке assertThat (outputInJson) .isEqualTo (inputInJson).Метод post класса контроллера возвращает объект ответа при создании предложения.

    @Test
public void testCreateOffer() throws Exception {
    Offer offer = new Offer("SE", new Date(), 10);

    MockHttpServletRequest request = new MockHttpServletRequest();
    RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));

    URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{jobTitle}")
            .buildAndExpand(offer.getJobTitle()).toUri();

    String inputInJson = this.mapToJson(ResponseEntity.created(location).build());
    Mockito.when(offerService.createOffer(Mockito.any(Offer.class))).thenReturn(offer);

    RequestBuilder requestBuilder = MockMvcRequestBuilders.post("/offers").accept(MediaType.APPLICATION_JSON)
            .content(inputInJson).contentType(MediaType.APPLICATION_JSON);

    MvcResult result = mockMvc.perform(requestBuilder).andReturn();

    MockHttpServletResponse response = result.getResponse();

    String outputInJson = response.getContentAsString();

    assertThat(outputInJson).isEqualTo(inputInJson);

    assertThat(response.getStatus()).isEqualTo(HttpStatus.CREATED.value());

}

private String mapToJson(Object object) throws JsonProcessingException {
    ObjectMapper objectMapper = new ObjectMapper();
    return objectMapper.writeValueAsString(object);
}

и метод сообщения класса контроллера

@PostMapping("/offers")

public ResponseEntity<Object> createOffer(@Valid @RequestBody Offer offer) {
    Offer uoffer = offerService.createOffer(offer);

    URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{jobTitle}")
            .buildAndExpand(uoffer.getJobTitle()).toUri();

    return ResponseEntity.created(location).build();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...