스프링 기반 REST API 개발 -백기선님 인프런 강좌를 보고 작성하였습니다.
입력값이 이상한 경우 Bad Request 처리-1
EventControllerTests
1 | public void createEvent_Bad_request_Empty_Input() throws Exception { //필요 이상 입력값 입력시 400오류 |
빈 값을 보내는 테스트 케이스를 하나 만듭니다.
이 테스트는 빈 값을 보내기 때문에 BadRequest가 나오길 바라지만 테스트가 깨지게 됩니다.
하지만 입력값이 이상하지만 보내는 필드가 같기 때문에 요청이 처리가 되어버린다.
이러한 경우 @Valid와 BindingResult를 이용한다.
EventController
1 | public ResponseEntity createEvent(@RequestBody @Valid EventDto eventDto,Errors errors){ |
컨트롤러에 EventDto에 Valid어노테이션을 추가하면 EventDto에 바인딩 할때 검증을 할 수 있습니다.
검증한 결과는 Errors에 담기게 됩니다.
EventDto
1 | public class EventDto { |
@NotEmpty 와 NotNull을 이용하여 검증하여 줍니다.
EventController
다시 컨트롤러로 이동하여 아래 문장을 추가하여줍니다.1
2
3if(errors.hasErrors()){
return ResponseEntity.badRequest().build() ;
}
검증에 에러가 존재한다면 BadRequest를 응답으로 주게 됩니다.
이렇게 테스트 케이스는 성공을 하게 됩니다.