@WebMvcTest 단위 테스트를 진행하던 도중 void타입의 컨트롤러에서 에러를 발생시킬때 사용하였다.
@PostMapping("/{boardId}")
public ResponseEntity<?> createLists(@PathVariable(name = "boardId") Long id,@RequestBody
CreateListsRequest request) {
listsService.createLists(id,request);
return ResponseEntity.ok(
RootResponse.builder()
.status("200")
.msg("리스트 저장에 성공했습니다.")
.build()
);
}
@Override
@Transactional
public void createLists(Long id, CreateListsRequest request) {
if (!boardService.boardCheck(id)) {
throw new ServiceException(NOT_EXIST_LIST);
}
long order = repository.countByBoardId(id);
Lists lists = Lists.builder().boardId(id).name(request.name()).order((order+1)).build();
Lists response = repository.save(lists);
}
@DisplayName("리스트 생성 실패")
@Test
void create_lists_fail_1() throws Exception {
//given
CreateListsRequest request = new CreateListsRequest("첫번째");
//when
doThrow(new ServiceException(NOT_EXIST_LIST)).when(listsService)
.createLists(1L, request);
//then
mockMvc.perform(post("/api/lists/1")
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(request))
)
.andDo(print())
.andExpectAll(
status().isBadRequest(),
jsonPath("$.status").value("3000"),
jsonPath("$.msg").value("리스트가 없습니다.")
);
}