• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

페이징처리 관련 질문

22.07.19 23:37 작성 조회수 169

1

안녕하세요 호돌맨님! 강의를 들으며 따라하고 있었는데 조금의 예외를 주니 오류가 발생하여 문의드립니다.

 

페이징 처리 도중

@Builder.Default를 통해 기본값 처리를해서 get /posts를 할때 인자값을 주지 않아도 페이지 1과 10개의 값을 가져오도록 하셨는데

테스트에서 /posts만 넘겨주니 null 포인트 오류가 발생하더라구요.

따로 디버깅을 통해 getSize()나 getPage()를 통해 확인해보니 값이 null로 설정 되어있었습니다. 혹시 이부분에 해결방법이 있을까요?

답변 1

답변을 작성해보세요.

0

안녕하세요. 호돌맨입니다.
질문을 남겨주셔서 감사합니다.

테스트 하신 게 맞습니다.
@Builder.default는 http요청시 스프링에서 값을 주입할때 사용되지 않고 Builder 패턴을 통해 값을 세팅할때 (테스트 코드에서)작동합니다.

예를들어 PostSearch.java 각 멤버변수에 @Builder.default가 빠진 상태로 아래 코드를 테스트 하면 실패하겠죠.

@Getter
@Setter
@Builder
public class PostSearch {

private static final int MAX_SIZE = 2000;

private Integer page = 1;

private Integer size = 10;
}
@Test
void test1() {
// given
PostSearch request = PostSearch.builder()
.build();

// expected
assertEquals(request.getPage(), 1);
}

그렇다면 page, size같은 값을 누락한생태로 http 요청을 날렸을때 null이 아닌 기본 값을 세팅하게 하려면 어떻게 해야할까요? 연구해보시고 저도 알려주세요.

제가 알려드린 거 외에 예외를 생각하며 테스트 하셔서 감사합니다. 개발자에게는 그러한 호기심과 실험은 굉장이 중요하다고 생각합니다.

감사합니다.