[Spring] 4. 테스트 코드 퀴즈 - 컨트롤러 테스트의 이해

Kim yoon beom·2025년 5월 9일
0


문제 원인:

테스트 코드에서 에러(InvaildRequestException)가 발생했을 때 HTTP 400(Bad Request)이 반환 되어야 하지만

테스트에서 200을 원하고 있어 발생하는 오류이다.


해결:


애초에 .isOk()를 통해 200 OK를 기대했다 → 잘못된 설정


다른 방식:

.andExpect(status().isBadRequest())
.andExpect(jsonPath("$.status").value(HttpStatus.BAD_REQUEST.name()))
.andExpect(jsonPath("$.code").value(HttpStatus.BAD_REQUEST.value()))

내가 해결한 방식과 제일 비슷해보이는 방법을 찾았다.

그런데 더 좋아 보이는 방식을 발견

.andExpect(status().is4xxClientError())
.andExpect(jsonPath("$.status").value(HttpStatus.BAD_REQUEST.name()))
.andExpect(jsonPath("$.code").value(HttpStatus.BAD_REQUEST.value()))
  • is4xxClientError()는 400번대 에러(예: 400, 404 등) 모두를 허용한다.

  • 만약 예외 처리 정책이 바뀌어 404, 422 등 다른 4xx 코드가 나가더라도 테스트가 깨지지 않는다.

  • 반면, 위 코드(isBadRequest())는 400만을 허용한다.

[Spring 공식 문서] 에서도 is4xxClientError() 와 같은 범용적인 사용을 권장한다.

profile
나는.원한다.개발자

0개의 댓글