TDD 연습 프로젝트 7 - 멤버십 삭제 API

zunzero·2022년 9월 15일
0

스프링, JPA

목록 보기
15/23

나의 멤버십 삭제 API

요구사항

  • 나의 멤버십 삭제 API
    - 기능: 나의 멤버십을 삭제한다.
    • 요청: 사용자 식별값, 멤버십 번호
    • 응답: X

Repository 계층 개발

JPARepository는 deleteById라는 메서드를 제공한다.
1개의 엔티티를 먼저 추가하고, 해당 엔티티를 삭제하는 테스트 코드를 작성해본다.

컴파일 에러도 발생하지 않았고, 검증할 것도 없기에 더 이상 작성할 테스트는 존재하지 않아, Repository 계층 개발은 여기서 끝이다.

Service 계층 개발

서비스 계층에서는 해당 멤버십 번호로 멤버십을 조회하고, 사용자가 요청자와 일치하는 경우에 삭제를 진행해야 한다.
멤버십 삭제에 대한 실패 케이스는 멤버십이 없는 경우, 멤버십이 있는데 본인의 것이 아닌 경우가 있다.
해당 케이스 순서대로 테스트를 작성해본다.

현재 서비스 계층에는 removeMembership 메서드가 없기 때문에 컴파일 에러가 발생한다.
컴파일 에러를 고칠 겸, 프로덕트 코드를 수정하겠다.

프로덕션 코드 수정 후, 작성한 3가지 테스트 모두 성공하였다.

Controller 계층 개발

멤버십 삭제 API 개발을 위한 테스트 코드를 작성하도록 하겠다.
Delete Method의 경우 No Content로 응답하는게 표준이므로, Http Status 204(No Content)로 성공 테스트의 응답을 작성하겠다.

테스트 결과는 너무도 당연하게 405 에러이다.
해당 url에 Delete Method를 허락하지 않았기 때문이다.
(지금은 같은 url에 대해 Method만 달리 하지만, 다양한 url의 API를 개발할 때는 404에러를 자주 만날 것이다.)
에러 수정을 위해 Controller 코드를 수정하도록 하겠다.

다음과 같이 Controller 수정 후, 테스트는 성공적으로 마무리되었다.

profile
나만 읽을 수 있는 블로그

0개의 댓글