Это демонстрационный контроллер.
@PostMapping("/rest/new")
public ResponseEntity<MessageDto> newUser(@RequestBody UserDto userDto) {
return ResponseEntity.ok(new MessageDto().setMessage(userService.createUser(userDto)));
}
Это служебный слой.
@Override
public String createUser(UserDto userDto) {
// Do Something
return "Successful!!";
}
Это тестовый код для проверки контроллера
@Test
public void testPostRestController() throws Exception {
UserDto userDto = new UserDto();
userDto.setName("AA");
userDto.setEmail("a@a.a");
userDto.setId((long) 1);
when(userService.createUser(userDto)).thenReturn("Successful!!");
mockMvc.perform(post("/rest/new")
.contentType(MediaType.APPLICATION_JSON_UTF8_VALUE)
.content(new ObjectMapper().writeValueAsString(userDto)))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
.andExpect(jsonPath("$.message", is(userService.createUser(userDto))))
.andDo(MockMvcResultHandlers.print());
}
Проблема в том, что когда я запускаю тестовый код, он должен проверять статус ответа и ответное сообщение. Статус ответа соответствует, но проблема в том, что ответное сообщение всегда возвращается как ноль.
ошибка:
java.lang.AssertionError: JSON path "$.message"
Expected: is "Successful!!"
but: was null
Я что-то здесь упускаю?