REST API 개발 중 비즈니스 로직 적용 부분의 JSON 에러
아래와 같이 perform 과정에서 validator -> serialize로 넘어가는 부분에서 json 이 eventDTO를 찾을 수 없다는 에러가 발생하여 json을 직렬화할 수 없어서 error 메시지가 반환되지 않아 test 실패가 나타나는 것 같습니다. 혹시 버전 차이로 인해 필요한 어노테이션이나 함수가 달라져 발생하는 문제일까요? 관련하여 검색해도 답안을 찾기 어려워서 질문 드립니다. 감사합니다.
Inconvertible types; cannot cast 'org.example.springrestproject.Events.EventControllerTests' to 'org.springframework.test.util.JsonPathExpectationsHelper'
No value at JSON path "$[0].objectName"
java.lang.AssertionError: No value at JSON path "$[0].objectName"
at org.springframework.test.util.JsonPathExpectationsHelper.evaluateJsonPath(JsonPathExpectationsHelper.java:302)
at org.springframework.test.util.JsonPathExpectationsHelper.assertExistsAndReturn(JsonPathExpectationsHelper.java:326)
at org.springframework.test.util.JsonPathExpectationsHelper.exists(JsonPathExpectationsHelper.java:190)
at org.springframework.test.web.servlet.result.JsonPathResultMatchers.lambda$exists$3(JsonPathResultMatchers.java:123)
at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:214)
at org.example.springrestproject.Events.EventControllerTests.createEvent_Bad_Request_Wrong_Input(EventControllerTests.java:149)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
Caused by: java.lang.IllegalArgumentException: json can not be null or empty
at com.jayway.jsonpath.internal.Utils.notEmpty(Utils.java:401)
at com.jayway.jsonpath.JsonPath.read(JsonPath.java:390)
at com.jayway.jsonpath.JsonPath.read(JsonPath.java:377)
at org.springframework.test.util.JsonPathExpectationsHelper.evaluateJsonPath(JsonPathExpectationsHelper.java:299)
... 8 more




Câu trả lời 1
0
안녕하세요, 인프런 AI 인턴입니다. shihi님.
강의 중 발생한 JSON 관련 오류로 인해 테스트가 실패하는 부분에 대한 질문을 주셔서 감사합니다.
해당 에러는 JsonPath를 통해 특정 경로의 값을 참조하려다 발생하는 것으로 보입니다. 정확한 원인을 파악하기 위해선 아래 두 가지 항목을 점검해 보시는 것이 좋습니다.
MediaType및Accept설정:
기본적으로 Spring 프로젝트에서MediaType.APPLICATION_JSON대신MediaType.APPLICATION_JSON_UTF8를 사용할 때 문제가 발생할 수 있습니다. 이를 해결하려면 컨트롤러와 테스트 코드에서 미디어 타입을 맞춰주는 것이 중요합니다.JsonPath,Enum및 직렬화 문제:
JsonPath를 사용해 JSON 데이터를 검증할 때Enum타입의 값을 문자열로 비교해야 할 때가 있습니다. 이때, enum 값을 바로 비교하면 타입 불일치 오류가 발생할 수 있습니다.
관련된 문제로 도움이 될 만한 유사한 질문과 답변들을 링크해드리니, 확인해보시길 추천드립니다.
관련 질문 및 답변
-
- 주요 내용:
JsonPath를 통해Enum값을 비교할 때 문자열로 변환하여 비교하는 방법과Enum타입의 JSON 직렬화를 다루는 방법에 대한 설명이 포함되어 있습니다.
- 주요 내용:
-
- 주요 내용: 스프링 부트 버전 업그레이드와 JSON 직렬화/역직렬화 과정에서 발생할 수 있는 이슈 다루기,
ErrorsResource설정법 등에 대해 설명하고 있습니다.
- 주요 내용: 스프링 부트 버전 업그레이드와 JSON 직렬화/역직렬화 과정에서 발생할 수 있는 이슈 다루기,
-
- 주요 내용:
ErrorsResource사용 시 JSON 파싱 오류를 해결하는 방법이 담겨있습니다.JsonSerializer에 특정 필드명을 추가하고, 테스트 코드에서 해당 필드명으로 체크하는 방법을 설명하고 있습니다.
- 주요 내용:
추가 설명 및 해결 방법
- 이유: 제공된 JSON 경로가 잘못되었거나 존재하지 않는 경우 발생할 수 있습니다. 예를 들어,
eventDTO객체에objectName필드가 존재하지 않는 상황일 수 있습니다.
- 해결 방법:
produces에HAL_JSON_VALUE를 설정해보시고, 테스트 코드에서 모델 객체를objectMapper로 직렬화하여 쿼리에 포함시키는 것을 확인해보세요.
현재 에러 메시지와 상황을 종합해보면, JsonPath를 적절하게 사용하고 있는지, 그리고 미디어 타입 설정이 맞는지 주의깊게 살펴보는 것이 중요합니다. 각 코드를 세밀하게 검토하고 필요한 타입 변환을 확실히 해준다면, 오류를 해결하는 데 도움이 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
Spring 시큐리티 관련해서 WebSecurityConfigurationAdapter
0
73
1
junit5 사용하시는 분들
0
87
1
자바 빈 스펙을 준수하는지 체크하는 테스트
0
234
2
스프링 부트 3버전에서의 실습
0
190
1
java.lang.AssertionError: Status
0
528
2
spring doc 관련 파일 생성 관련 배포 관련 질문 드립니다.
0
286
1
섹션2 201응답받기 부분 테스트 404에러 질문입니다
0
738
1
강의 자료가 404입니다 확인 부탁 드려요!
0
474
1
연동 DB문의
0
357
1
이벤트 Repository강의 중 Event 클래스에 private Integer Id; 위치 질문
0
503
1
(Mac) postgressql 관련하여 port kill 해도 다시 살아나는 경우
0
378
0
maven으로 생성한 docs파일(index.html)에서의 not found 오류 질문
0
621
1
테스트 오류 질문드립니다.
0
511
1
docs 요청값이 반영이 안되네요... (해결)
-1
392
1
psql 적용 후 에러
0
818
2
mvn package 시 다음과 같은 에러가 나시면
0
761
2
Event에 Account manager를 추가했으면 문서화 필요
0
273
1
2년 훨씬 전 부터 Restlet-> Talend API 로 바뀌었습니다~
1
473
1
asciidoc 추가 스니펫 에러 해결법
0
398
1
_links 는 현재 fieldWithPath 를 해주지 않아도 됩니다.
0
420
3
깃랩 처음 사용자를 위한 index.adoc raw 보는 법
0
330
1
eclipse 쓰시는 분을 위한 maven-resources-plugin 팁
0
331
1
부트 + jupiter 인 경우 설정법
0
340
1
혹여 기선님 말 안 듣고 gradle로 프로젝트 생성했다가 피똥싸고 계신 분들을 위하여
2
387
1

