이것저것

Caused by: java.lang.IllegalStateException: No primary or single unique constructor found for interface org.springframework.data.domain.Pageable 에러 해결

감자b 2025. 2. 1. 19:02

컨트롤러에 대한 단위 테스트를 진행하는데 위 에러가 발생하였다.

Spring Rest Docs 생성을 위한 테스트 환경에서 MockMvc를 standaloneSetup으로 설정하여 스프링 컨테이너 없이 최소한의 설정으로 진행되도록 하였는데, 여기서 컨트롤러의 Pageable 파라미터를 처리할 수 없기 때문에 발생하는 오류이다.

this.mvc = MockMvcBuilders.standaloneSetup(initController())
	.apply(documentationConfiguration(provider))
	.build();

 

따라서 요청 파라미터를 가지고 PageRequest 객체를 생성시켜주는 PageableHandlerMethodArgumentResolver 설정을 추가시켜주어야 한다.

PageableHandlerMethodArgumentResolver pageableResolver = new PageableHandlerMethodArgumentResolver();
this.mvc = MockMvcBuilders.standaloneSetup(initController())
	.setCustomArgumentResolvers(pageableResolver)
	.apply(documentationConfiguration(provider))
	.build();