
이 글은 2026년 05월 26일 작성된 글입니다.
오늘은 REST API 테스트를 더 정교하게 다듬고,
예외 처리와 HTTP 상태코드 처리,
그리고 IoC 컨테이너의 BeanDefinition 구조를 확장하는 작업을 진행했다.
글 수정 API 테스트를 더 강화했다.
기존에는 응답만 확인했다면,
이제는 실제로 수정된 데이터가 DB에 반영되었는지도 검증했다.
assertThat(post.getTitle()).isEqualTo("수정된 제목");
REST API 테스트에서 어디까지 검증해야 하는지 기준을 정리했다.
응답 JSON 구조와 필드값 검증
{
"resultCode": "200-1",
"msg": "글 수정 완료"
}
실제 DB 조회 후 데이터 검증
Post post = postService.findById(1);
응답 구조 검증은 필수,
DB 반영 여부까지 확인하는 것은 상황에 따라 선택이다.
글 삭제 API 테스트를 추가했다.
mockMvc.perform(delete("/api/v1/posts/1"))
단건 조회 테스트도 추가했다.
.andExpect(jsonPath("$.data.id").value(1))
게시글 목록 조회 테스트를 구현했다.
.andExpect(jsonPath("$.data.length()").value(3))
Postman Collection에 baseURL 변수를 추가했다.
{{baseURL}}/api/v1/posts
존재하지 않는 글 조회 시 404 응답을 반환하도록 수정했다.
return ResponseEntity.status(404).body(rsData);
제목 없이 글 작성 시 400 Bad Request가 발생하도록 구현했다.
@NotBlank
private String title;
유효성 검증 실패 시 발생하는 예외를 처리했다.
@ExceptionHandler(MethodArgumentNotValidException.class)
검증 에러를 문자열 형태로 정리했다.
.map(error -> error.getField()
+ "-" + error.getCode()
+ "-" + error.getDefaultMessage())
JSON 형식이 잘못된 경우에도 400 응답을 반환하도록 처리했다.
댓글 API 테스트도 시작했다.
/api/v1/posts/1/comments/2
댓글 목록 조회 테스트 추가.
/api/v1/posts/1/comments
@Bean 메서드 기반 생성도 처리할 수 있도록 확장했다.
new BeanDefinition<>(
TestJacksonConfig.class,
"testBaseJavaTimeModule"
);
assertThat(beanDefinition.getParameterNames())
.containsExactly("testBaseJavaTimeModule");