해결된 질문
작성
·
73
0
package kuke.board.hotarticle.api;
import kuke.board.hotarticle.service.response.HotArticleResponse;
import org.junit.jupiter.api.Test;
import org.springframework.core.ParameterizedTypeReference;
import org.springframework.web.client.RestClient;
import java.util.List;
public class HotArticleApiTest {
RestClient restClient = RestClient.create("http://localhost:9004");
@Test
void readAllTest() {
List<HotArticleResponse> responses = restClient.get()
.uri("/v1/hot-articles/articles/date/{dateStr}", "20250225")
.retrieve()
.body(new ParameterizedTypeReference<List<HotArticleResponse>>() {
});
for (HotArticleResponse response : responses) {
System.out.println("response = " + response);
}
}
}
섹션 6 인기글 Producer&Consumer 테스트
테스트 코드 실행 오류가 발생합니다.
2025-02-25T14:24:03.178+09:00 INFO 38230 --- [kuke-board-hot-article-service] [nio-9004-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2025-02-25T14:24:03.178+09:00 INFO 38230 --- [kuke-board-hot-article-service] [nio-9004-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
2025-02-25T14:24:03.191+09:00 WARN 38230 --- [kuke-board-hot-article-service] [nio-9004-exec-1] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingPathVariableException: Required URI template variable 'dataStr' for method parameter type String is not present]
org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 Internal Server Error: "{"timestamp":"2025-02-25T05:24:03.195+00:00","status":500,"error":"Internal Server Error","path":"/v1/hot-articles/articles/date/20250225"}"
다른 질문글에서 언급한 500에러 해결책을 참고해봤지만 소용이 없네요.
코드를 점검해봐도 잘못 작성한게 없어보입니다.
기초 선수지식이 없는 상태에서 클론코딩을 하다보니 어디를 어떻게 더 점검해야할지 모르겠는데 제시 해주신다면 찾아서 해결해보려고 합니다. 어떻게 해야할까요?
답변 2
0
theplayer1003님, 안녕하세요!
일단 테스트 코드에서 500 에러 받는건, 클라이언트 입장에서의 로그라 제대로 남지 않습니다.
그래서 서버 애플리케이션에서의 로그를 보면서 직접 디버깅해봐야 합니다!
디버깅 도구를 써도 좋고, 아니면 그냥 저도 프린트문 직접 찍어보면서 찾아보기도 하네요!
api는 정상 호출하는지, 어디에서 예외가 발생하는지, 스택트레이스 흐름을 천천히 따라가보시면 좋습니다!
로그 올려주신 것 보니 "dataStr" 이라는 문구가 보이고,
MissingPathVariableException 예외를 보니 path variable이 없다고 하네요!
로그에 정답이 있어서, 남은 부분은 직접 찾아보시면 좋을 것 같네요!
혹시 찾기 어려우시면 다시 말씀 해주세요!
0
안녕하세요, 인프런 AI 인턴입니다. theplayer1003님.
스프링 부트 애플리케이션에서 테스트 코드 실행 시 발생하는 500 Internal Server Error 문제에 대해 다루어 보겠습니다. 오류 메시지를 보니, MissingPathVariableException
이 발생하고 있으며, 이는 URI 템플릿에서 요구하는 경로 변수가 메소드 인자에서 제공되지 않았기 때문일 가능성이 큽니다.
경로 변수 확인:
Required URI template variable 'dataStr'
가 언급된 것을 보면, 해당 URI 경로에서 경로 변수로 설정해야 할 변수가 제대로 전달되지 않은 것으로 보입니다. 테스트 코드의 URI는 /v1/hot-articles/articles/date/{dateStr}
인데, dateStr
를 {dateStr}
로 인식해야 하는데 {dataStr}
로 잘못 참조하고 있는 것 같습니다. 코드에서 {dateStr}
부분을 확인하고 정확한 변수 명을 사용했는지 체크해보세요.API 핸들러 검토:
@PathVariable("dateStr")
과 같이 정확히 변수명을 일치시키고 있어야 합니다. 이를 통해 올바른 경로 변수를 받을 수 있게 됩니다.서버 로깅 활성화:
관련하여 유사한 문제를 토의하는 인프런 게시물을 살펴볼 수 있습니다:
위의 내용을 바탕으로 설정과 코드 내의 경로 변수를 적절히 체크해보시기 바랍니다. 만약 여전히 500 오류가 계속된다면, 오류 메시지와 코드의 전체 흐름을 기반으로 더 깊이 있는 디버깅 작업을 진행해야 할 수도 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
아니... 하 ㅋㅋ..
path 틀린거 같아서 그걸 몇 번을 다시 봤는데 어떻게 이게 안 보일까요...
진짜 ㅋㅋ
하 감사합니다.