TDD 연습 프로젝트 5 - 멤버십 전체 조회 API 구현 (Repository, Service, Controller)

zunzero·2022년 9월 10일
0

스프링, JPA

목록 보기
13/23

나의 멤버십 전체 조회 API

요구사항

  • 나의 멤버십 전체 조회 API
    - 기능: 내가 가진 모든 멤버십을 조회한다..
    • 요청: 사용자 식별값
    • 응답: {멤버십 ID, 멤버십 이름, 포인트, 가입 일시}의 멤버십 리스트

Repository 계층 개발

역시나 바로 테스트 코드 개발부터 들어간다.
만나게 될 무궁무진한 컴파일 오류를 고치면서 프로덕트 코드를 짜보자!

우선 아무 데이터도 존재하지 않는 경우와, 2개의 데이터가 존재하는 경우에 대해서 테스트 코드를 작성해보았다.
findAllByUserId()라는 메서드가 존재하지 않아 발생하는 컴파일 오류를 고치기 위해 아래와 같이 Repository 코드를 수정하였다.

덕분에 테스트는 매우 간단하고 수월하게 통과하였다.

Service 계층 개발

서비스 계층에서 멤버십 목록 조회에 대한 테스트 코드를 작성하려 한다.
목록이 존재하지 않으면 빈 리스트로 반환되므로 실패하는 케이스가 없다.
따라서 성공 테스트 코드만 작성하면 된다.

작성한 테스트 코드의 컴파일 에러를 해결하기 위해 Membership Service 코드를 수정한다.

테스트 코드는 말끔히 통과했다.
하지만 현재는 엔티티를 그대로 반환하기 때문에 위험하므로 DTO로 변환하는 과정을 통해 코드를 리팩토링하도록 하겠다.

리팩토링 후에도 테스트는 문제 없이 통과했다.

Controller 계층 개발

이제는 멤버십 목록 조회 API 개발을 해야하는데, 먼저 헤더에 사용자 식별값이 없어 실패하는 경우부터 성공하는 경우까지 작성해보자.

두 경우에 대한 테스트 코드를 위와 같이 작성하였고, 405 에러를 띄우면서 테스트는 실패한다.
405 에러는 해당 url에 HTTP Method를 허용하지 않을 때 발생하는 에러이다.
우리는 해당 url에 대해 POST 방식의 API만 개발해두었기 때문에 해당 오류를 만나게 된 것이다.
따라서 Controller 코드를 아래와 같이 수정하면 테스트는 성공한다.

profile
나만 읽을 수 있는 블로그

0개의 댓글