21.03.08 20:28 작성
·
546
0
public enum EventStatus {
DRAFT, PUBLISHED, BEGAN_ENROLLMENT;
}
@Enumerated(EnumType.STRING)
private EventStatus eventStatus = EventStatus.DRAFT; // 기본값 설정
@Test
@TestDescription("정상적으로 이벤트를 생성하는 테스트")
public void createEvent() throws Exception {
EventDto event = EventDto.builder()
.name("Spring")
.description("REST API Development with Spring")
.beginEnrollmentDateTime(LocalDateTime.of(2018, 11, 23, 14, 21))
.closeEnrollmentDateTime(LocalDateTime.of(2018, 11, 24, 14, 21))
.beginEventDateTime(LocalDateTime.of(2018, 11, 25, 14, 21))
.endEventDateTime(LocalDateTime.of(2018, 11, 26 , 14, 21))
.basePrice(100)
.maxPrice(200)
.limitOfEnrollment(100)
.location("강남역 D2 스타텁 팩토리")
.build();
//Mockito.when(eventRepository.save(event)).thenReturn(event);
mockMvc.perform(post("/api/events")
.contentType(MediaType.APPLICATION_JSON_VALUE)
.accept(MediaTypes.HAL_JSON_VALUE)
.content(objectMapper.writeValueAsString(event)))
.andDo(print())
.andExpect(status().isCreated())
.andExpect(jsonPath("id").exists())
.andExpect(header().exists(HttpHeaders.LOCATION))
.andExpect(header().string(HttpHeaders.CONTENT_TYPE, MediaTypes.HAL_JSON_VALUE))
.andExpect(jsonPath("id").value(Matchers.not(100)))
.andExpect(jsonPath("free").value(false))
.andExpect(jsonPath("offline").value(true))
.andExpect(jsonPath("eventStatus").value(EventStatus.DRAFT));
java.lang.AssertionError: JSON path "eventStatus"
Expected :DRAFT
Actual :DRAFT
위와 같은 오류가 발생합니다.
아래와 같이 String 값을 직접 입력해주면 통과하구요...
.andExpect(jsonPath("eventStatus").value("DRAFT"));
어떻게 해결해야 할 지 알고싶습니다.
답변 1
0
2021. 03. 10. 04:03
JSON에 들어있는 값은 문자열이지 enum 타입이 아니니까 타입이 맞지 않으니 다른게 맞지 않을까요? 문자열을 Enum하고 비교하지 마시고 문자열끼리 비교하거나 Enum끼리 비교해야겠죠.