작성
·
212
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이 아닌 기본 값을 세팅하게 하려면 어떻게 해야할까요? 연구해보시고 저도 알려주세요.
제가 알려드린 거 외에 예외를 생각하며 테스트 하셔서 감사합니다. 개발자에게는 그러한 호기심과 실험은 굉장이 중요하다고 생각합니다.
감사합니다.