๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“• Spring Framework/Spring Project

[์ด์Šˆ] Pageable test ๊ด€๋ จ ์—๋Ÿฌ

by GroovyArea 2022. 11. 23.

๐Ÿ’ก๋ฌธ์ œ

API Controller๋ฅผ ํ…Œ์ŠคํŠธ ํ•˜๋Š”๋ฐ ์ž˜ ์„ฑ๊ณตํ•˜๋˜ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ณ„์† ์‹คํŒจํ•œ๋‹ค.

์ด๋Ÿฐ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๊ฐ€ ๊ณ„์† ๋œฌ๋‹ค.

 

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: No primary or single unique constructor found for interface org.springframework.data.domain.Pageable

 

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

mockMvc.perform(get("/api/v2/users")
                .param("page", String.valueOf(page)))
        .andExpect(status().isOk())
        .andExpect(content().string(JsonUtil.objectToString(pageOneUsers)))
        .andDo(print());

 

์ฝ”๋“œ

/**
 * ํšŒ์› ๋ฆฌ์ŠคํŠธ ์กฐํšŒ
 *
 * @return ํšŒ์› ๋ฆฌ์ŠคํŠธ
 */
@GetMapping
public ResponseEntity<List<ListResponseDto>> getAll(@PageableDefault(
        page = 1,
        sort = "createdAt",
        direction = Sort.Direction.DESC) Pageable pageable) {
    return ResponseEntity.ok(userService.getAllUsers(pageable));
}

 

๋ญ๊ฐ€ ๋ฌธ์ œ์—ฌ.

 

 

๐Ÿ˜Š ํ•ด๊ฒฐ

mockmvc๋ฅผ ์‚ฌ์šฉํ•œ ์›น ์š”์ฒญ์—์„œ๋Š” ํ…Œ์ŠคํŠธ์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด 

๋ณดํ†ต standaloneMockMvcBuilder๋ฅผ ์ด์šฉํ•ด ์ดˆ๊ธฐ ์„ค์ •์„ ํ•˜๋Š”๋ฐ, ์—ฌ๊ธฐ์„œ 

.setCustomArgumentResolvers(new PageableHandlerMethodArgumentResolver())

 

์ด๋ ‡๊ฒŒ ํŽ˜์ด์ง• ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜์—ฌ Pageable ์ธ์Šคํ„ด์Šค๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ ๋ฉ”์„œ๋“œ์— ์ฃผ์ž…ํ•ด์ฃผ๋Š” ์„ค์ •์„ ์ถ”๊ฐ€๋กœ ํ•ด์ฃผ๋ฉด ํ•ด๊ฒฐ๋œ๋‹ค.

 

ํ•˜ํ•ซ.

 

๋ฐ˜์‘ํ˜•