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

작성자 없음

작성자 정보가 삭제된 글입니다.

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

요청 매핑

@PathVariable 사용 질문

작성

·

808

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)

[질문 내용]
안녕하세요! PathVariable을 사용하다 궁금한 점이 생겨 질문 남깁니다.
변수명과 원하는 name 설정이 같으면 생략할 수 있다고 하셨는데 이를 테스트 코드로 작성 시 오류가 발생합니다.
(포스트맨으로 실행 시 성공..)
 
Controller

 

@ResponseBody
@GetMapping("/test/{id}")
public void test(@PathVariable Long id) {
        ...
}

 

Test Code

@Test
public void 테스트_코드() throws Exception {
        Long id = 1L;
        mvc.perform(get("/test/" + id))
                .andExpect(status().isOk());
}

 

Error

org.springframework.web.util.NestedServletException: Request processing failed; java.lang.IllegalArgumentException: Name for argument type [java.lang.Long] not available, and parameter name information not found in class file either. 

 

제가 조사한 바로는 아래와 같은데 (Spring 공식 문서 일부)

The matching of method parameter names to URI Template variable names can only be done if your code is compiled with debugging enabled. If you do have not debugging enabled, you must specify the name of the URI Template variable name to bind to in the @PathVariable annotation. 

 

 

debugging enabled한 compile이라는걸 이해할 수 없어 질문 납겨봅니다ㅠ.ㅠ

답변 남겨주시면 감사합니다.

답변 1

1

안녕하세요. yeonLog님, 공식 서포터즈 David입니다.

.
동일하게 오류 재현이 안 되어 확인할 수 없어 관련 오류를 경험하신 분이 쓴 글을 첨부합니다.

https://m.blog.naver.com/sm_woo/70185755273
.
감사합니다.

 

제가 겪는 오류랑 비슷한 상황인 것 같습니다

다만 postman이나 크롬에서 직접 접근하면 응답이 되는데 JUnit 테스트만 안됩니다.

JUnit 설정을 의심해야 하는건지.. 아니면 IntelliJ 환경 설정을 의심해야 하는건지 모르겠습니다

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기