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

gelab님의 프로필 이미지
gelab

작성한 질문수

실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발

컨트롤러단 페이징 테스트

작성

·

198

0

 

// 컨트롤러 코드
@GetMapping
public ResponseEntity<?> postList(@PageableDefault(size = 10, sort = "id", direction = Sort.Direction.DESC) Pageable pageable) {
    Page<Post> posts = postService.getPosts(pageable);

    return ResponseEntity.ok()
            .body(ApiResponse.of("success", "게시물 전체 조회 성공", posts));
}

 

// 테스트 코드
@DisplayName("게시물 전체를 페이징해서 조회해 온다.")
@Test
void postList() throws Exception {
    //given
    String sortProperty = "id";
    String direction = "desc";
    int pageNo = 0;
    int pageSize = 10;

    Pageable pageable = PageRequest.of(pageNo, pageSize, Sort.Direction.DESC, sortProperty);

    given(postService.getPosts(pageable)).willReturn(Page.empty());

    //when
    ResultActions result = mvc.perform(get("/api/posts")
            .queryParam("page", String.valueOf(pageNo))
            .queryParam("size", String.valueOf(pageSize))
            .queryParam("sort", sortProperty + "," + direction));

    //then
    result
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.status").value("success"))
            .andExpect(jsonPath("$.message").value("게시물 전체 조회 성공"))
            .andDo(print());

    then(postService).should().getPosts(pageable);
}

 

위 테스트 코드를 실행하면 httpstatus 200을 기대했지만 500이 떴다고 테스트 실패를 합니다.

위 코드대로면 /api/posts?page=0&size=10&sort=id,desc
이렇게 요청이 가는건데, 테스트코드 말고 포스트맨으로 직접 저렇게 요청 보내면 저는 정상적으로 응답이 옵니다 ㅠㅠ

왜 저 테스트코드 실행하면 500에러가 나는걸까요..? 500 날만한 곳을 전혀 모르겠습니다 혼자 몇시간동안 끙끙앓다가 질문드립니다 ㅜㅜㅜ

 

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. gelab님

도움을 드리고 싶지만 질문 내용만으로는 답변을 드리기 어렵습니다.

실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx


주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명

 

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

gelab님의 프로필 이미지
gelab

작성한 질문수

질문하기