- я пишу код теста загрузки @WebMvcTest Spring
- HTTP-метод тестирования Post
- но тестовый код метода Post возвращает
null
- но ControllerУровень пост-сопоставления имеет возвращаемое значение (например, ResponseEntity
уровень контроллера
@PostMapping("/api/todos")
public ResponseEntity<ResponseTodoDto> createTodo(@RequestBody RequestTodoDto requestTodoDto){
final ResponseTodoDto savedResponseTodoDto = todoService.createTodo(requestTodoDto);
return ResponseEntity.ok().body(savedResponseTodoDto);
}
код теста
@Test
public void Todo_등록_API_Test() throws Exception {
ObjectMapper objectMapper = new ObjectMapper();
RequestTodoDto requestTodoDto = new RequestTodoDto();
requestTodoDto.setContent("테스트 코드 작성하기");
ResponseTodoDto responseTodoDto = new ResponseTodoDto();
responseTodoDto.setId(1L);
responseTodoDto.setContent("테스트 코드 작성하기");
responseTodoDto.setCreateDate(LocalDateTime.now());
responseTodoDto.setUpdateDate(LocalDateTime.now());
// given
given(todoService.createTodo(requestTodoDto)).willReturn(responseTodoDto);
MvcResult result = mockMvc.perform(post("/api/todos")
.content(objectMapper.writeValueAsString(requestTodoDto))
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andReturn();
/** empty **/
log.debug(result.getResponse().getContentAsString());
}
- Я ожидаю, что выход log.debug будет [{"id": 1, "content": "테스트 코드 작성 하기", "createDate": "2019-07-02T23: 43: 09.636"," updateDate ":" 2019-07-02T23: 43: 09.636 "}], но отладка журнала пуста
+) TodoService и TodoService @Serviceаннотация это маркировка по коду
Как ~
@Service
public class TodoService { ... }
@Transactional
ResponseTodoDto createTodo(final RequestTodoDto dto){
Todo todo = Todo.builder()
.content(dto.getContent())
.build();
Todo savedTodo = todoRepository.save(todo);
return modelMapperUtils.map(savedTodo, ResponseTodoDto.class);
}