스프링 기반 REST API 개발 -백기선님 인프런 강좌를 보고 작성하였습니다.
입력값 이외에 에러 발생
저번 포스트에는 입력값 이외에 값이 들어오면 무시하였지만 이번 포스팅에서는 에러를 발생시키는 방법에대해 포스팅 하겠습니다.
EventControllerTests
테스트에 입력값 이외에 값을 넣는 테스트를 작성합니다.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26public void createEvent_Bad_request() throws Exception { //필요 이상 입력값 입력시 400오류
Event event = Event.builder()
.id(100)
.name("Spring")
.description("REST API Development with Spring")
.beginEnrollmentDateTime(LocalDateTime.of(2018,11,23,14,22))
.closeEnrollmentDateTime(LocalDateTime.of(2018,11,24,14,22))
.beginEventDateTime(LocalDateTime.of(2018,11,25,14,22))
.endEventDateTime(LocalDateTime.of(2018,11,26,14,22))
.basePrice(100)
.maxPrice(200)
.limitOfEnrollment(100)
.location("강남역 D2 스타텁 팩토리")
.free(true)
.offline(false)
.eventStatus(EventStatus.PUBLISHED)
.build();
mockMvc.perform(post("/api/events")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.accept(MediaTypes.HAL_JSON)
.content(objectMapper.writeValueAsString(event)))
.andDo(print())
.andExpect(status().isBadRequest())
;
}
application.properties
application.properties에 아래 한줄을 추가해 줍니다.1
spring.jackson.deserialization.fail-on-unknown-properties=true
json을 오브젝트로 변환하는 과정을 deserialization이라고 하는데
변환도중에 unknown-properties가 있으면 실패하게 하라 는 뜻입니다.
결과
이렇게 하면 받기로 한 값 이외에 id, free, offline 값 등을 같이 넘기기 때문에
Bad Request 400 에러가 발생하게 됩니다.