인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

백엔드개발님의 프로필 이미지
백엔드개발

작성한 질문수

스프링 기반 REST API 개발

비즈니스 로직 적용

테스트시 enum 값 불일치

작성

·

562

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

백기선님의 프로필 이미지
백기선
지식공유자

JSON에 들어있는 값은 문자열이지 enum 타입이 아니니까 타입이 맞지 않으니 다른게 맞지 않을까요? 문자열을 Enum하고 비교하지 마시고 문자열끼리 비교하거나 Enum끼리 비교해야겠죠.

백엔드개발님의 프로필 이미지
백엔드개발

작성한 질문수

질문하기