profile
개발자가 되는 그날까지
post-thumbnail

TDD 멤버십 삭제 및 포인트 적립 API 구현

멤버십 삭제 요구사항 [요구사항 확인] 나의 멤버십 삭제 API 기능: 나의 멤버십을 삭제합니다. 요청: 사용자 식별값, 멤버십 번호 응답: X 멤버십 삭제를 위해서는 해당 멤버십 사용자가 멤버십 조회 페이지에서 삭제를 할 수 있게 만들어야 하기 때문에 멤버십의 PK만 알면 삭제할 수 있도록 만들어야 한다. 제일 먼저 레파지토리테스트를 해보자. 멤버십을 지울 membershipRepository의 deleteByMembershipId가 없으므로 컴파일 오류가 난다. 또한 membershipId를 찾아서 확인할 findByMembershipId도 없다. membershipRepository에 필요한 것들을 추가 생성한다. 다시 테스트를 돌려보면 테스트에 성공한다. 이제 Service 계층을 만들어보자. 서비스 계층에서는 해당 멤버십 번호로 멤버십을 조회하고, 사용자가 요정자와 일치하는 경우에 삭제를 진행해야 한다. 멤버십 삭제에 대한

2023년 2월 10일
·
0개의 댓글
·
post-thumbnail

TDD 멤버십 상세 조회 API 구현

[ 요구사항 확인 ] 나의 멤버십 상세 조회 API 기능: 나의 1개 멤버십을 상세 조회합니다. 요청: 사용자 식별값, 멤버십 ID 응답: 멤버십 ID, 멤버십 이름, 포인트, 가입일시 상세조회 실패시를 테스트 코드로 작성해보자. 상세조회 실패시는 해당 멤버십이 없을 때이다. 그 전에 Entity를 수정해보자 간단한 erd를 만들어보았다. 상세 조회를 할 시 본인의 인덱스를 참조하여 상세 멤버십을 조회하는 것이다. 이 전에 작성했던 기능들을 다시 수정해보자. 또, 추가되는 member 엔티티에 대한 테스트코드도 작성하자. 수정된 코드들은 내 깃에 올려두겠다. 상세 조회할 멤버십이 없을때의 실패시 테스트 코드를 작성해보자. memberService의 readDetailMem

2023년 2월 8일
·
0개의 댓글
·
post-thumbnail

TDD 멤버십 전체 조회 API 구현

[ 요구사항 확인 ] 나의 멤버십 전체 조회 API 기능: 내가 가진 모든 멤버십을 조회합니다. 요청: 사용자 식별값 응답: {멤버십 ID, 멤버십 이름, 포인트, 가입 일시}의 멤버십 리스트 클라이언트가 해당 클라이언트의 ID를 입력했을 시 클라이언트가 가진 모든 멤버십을 조회할 수 있게 만들 레파지토리부터 테스트 코드를 진행하겠다. 멤버십이 없을 때와 있을때의 테스트코드를 나누어 작성한다. 처음으로 멤버십이 없을때의 테스트 코드를 짜보았을 때, MembershipRepository에 findByUserId가 없기 때문에 컴파일 오류가 난다. 이 컴파일 오류부터 해결해보자. MembershipRepository를 수정 후 다시 테스트를 돌려보면 성공한다. 이번에는 멤버십이 있을 때의 코드를 짜보았다. 잘 성공하는 것을 확인할 수 있다. 이제 서비스 파트를 테스트 해보자 Service 클래스에 read메서드가 없어 컴파일 오류가 난다.

2023년 2월 5일
·
0개의 댓글
·
post-thumbnail

TDD 멤버십 등록 API 구현 2

[멤버십 등록 API 구현] 다음으로 멤버십을 등록할 테스트를 작성해 보았다. Membership 엔티티 클래스에 해당 컬럼들이 없기 때문에 컴파일 오류가 난다. 컬럼을 생성하고 다시 테스트를 돌려보자 이후 테스트를 다시 돌려보면 성공하는 것을 볼 수 있다. 리팩토링 단계로 멤버십타입을 enum형식으로 바꾸면 관리하기 좋을 것 같다. enum형식이 없으므로 컴파일 오류가 난다. 매우 잘한 것이다. 테스트 코드를 먼저 변경하고 그 이후에 프로덕트 코드를 변경하는 단계를 잘 생각해서 해보자. 컴파일 오류를 확인 했으니, MembershipType enum클래스를 만들어보자. 테스트를 돌려보면 아직 컴파일 오류가 난다. Membership 클래스의 membershipType을 String 타입으로 해놨기 때문에 오류가 난다. String을 MembershipType타입으로 변경하고 다시 테스트를 돌려보자 ![](https://velog.velcdn.c

2023년 2월 5일
·
0개의 댓글
·
post-thumbnail

TDD 멤버십 등록 API 구현 1

[멤버십 등록 API구현] 엔티티 등록을 위한 repository부터 개발을 할 것이다. 제일 먼저 MembershipRepository에 대한 테스트 클래스부터 작성한다. > 실제 코드를 짤때는 생성자 주입을 하도록 한다. 지금은 테스트 코드 이므로 간편하게 필드 주입을 사용한다. 컴파일 오류가 날 것이다. 해당 레파지토리와 엔티티가 없기 때문이다. 레파지토리와 엔티티를 만들어보고 다시 실행시켜보자 다시 실행시켜보면 컴파일 오류가 날 것이다. 이 테스트에서 레파지토리의 빈 생성을 못했기 때문이다. 따라서 @SpringBootTest 어노테이션을 사용해서 테스트 파일 바깥에 있는 레파지토리 파일을 빈으로 생성해서 테스트를 한다. (사실 테스트 코드를 작성할 때 필요한 클래스들은 테스트 안에 넣고 하는것이 정석이지만, 나는 main파일에 넣고 하였다.) @SpringBootTest가 아닌 @DataJpaTest 어노테이션을 사용해도 된다. >@Dat

2023년 2월 3일
·
0개의 댓글
·
post-thumbnail

TDD 요구사항 분석 및 환경설정

[문제 설명] 멤버십 적립 서비스 현재 지원중인 멤버십에는 네이버, 카카오, 라인 3가지 멤버십이 있으며, 사용자는 원하는 멤버십을 등록할 수 있다. 포인트 적립비율은 결제금액의 1%로 고정되며, 추후에 고정 금액(1000원)으로 확장하여 적립될 수 있어야 한다. [기능 요구 사항] 멤버십 연결하기, 나의 멤버십 조회, 멤버십 연결끊기, 포인트 적립 API 구현 사용자 식별값은 문자열 형태이며, 이 값은 포인트 적립할 때 바코드 대신 사용됩니다. 각 기능 및 제약사항에 대한 개발을 TDD, 단위테스트를 기반으로 진행해야 합니다. [상세 기술 구현 사항] 나의 멤버십 등록 API 기능 : 나의 멤버십을 등록합니다. 요청 : 사용자 식별값, 멤버십 이름, 포인트 응답 : 멤버십 ID, 멤버십 이름 나의 멤버십 전체 조회 API 기능 : 내가 가진 모든 멤버십을 조회합니다. 요청 :

2023년 2월 3일
·
0개의 댓글
·
post-thumbnail

TDD 공부

1. 단위 테스트, 통합 테스트 단위 테스트란, > 코드가 제대로 작동하는지 확인하기 위해 애플리케이션의 개별 모듈을 독립적으로 테스트 (종속성과의 상호 작용없이)하는 것을 의미합니다. 통합 테스트란, > 다른 모듈이 그룹으로 결합 될 때 잘 작동하는지 확인하는 것을 의미합니다. 간단한 예로 기능성 휴대폰을 사용할 경우 필요한 주요 부품은 "배터리"와 "유심 카드"입니다. 단위 테스트 예) 배터리의 수명, 용량 및 기타 매개 변수를 확인한다. SIM 카드가 활성화 되었는지 확인한다. 통합 테스트 예) 배터리와 SIM카드가 일체화 되어 휴대폰을 시작하기 위해 조립됩니다. 2. 단위 테스트의 중요성 단위 테스트를 작성해야 하는 이유는 정말 너무 많다. 그 중에서 몇 가지 핵심적인 이유들을 작성하면 다음과 같다. 코드를 수정하거나 기능을 추가할 때 수시로 빠르게 검증 할 수 있다. 리팩토링 시에 안정성을 확보할 수 있

2023년 2월 3일
·
0개의 댓글
·
post-thumbnail

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 [회원 관리 예제 - 백엔드 개발]

비즈니스 요구사항 정리 데이터: 회원ID, 이름 기능: 회원 등록, 조회 아직 데이터 저장소가 선정되지 않음(가상의 시나리오) (RDBMS를 쓸지, NoSQL을 쓸지) 일반적인 웹 애플리케이션 계층 구조 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 도메인 객체, ex) 회원, 주문, 쿠폰 등등 주로 데이터베이스에 저장하고 관리됨 클래스 의존관계 아직 데이터 저장소가 선정되

2022년 12월 28일
·
0개의 댓글
·
post-thumbnail

스프링 부트, 입문! 21

Test 작성하기 Test란 프로그램의 품질 검증을 위한 것으로 우리의 의도대로 프로그램이 동작하는지 확인하는 것이다. 웹 브라우저를 통하여 확인하는 과정을 최소화 시킬 수 있다. 예상 시나리오 작성 실제 코드 결과 와 비교 및 비교 성공시 리팩토링 실패시 디버깅을 통해 코드를 고친다. TDD TDD란 Test Driven Development의 약자로 ‘테스트 주도 개발’이라고 한다. 테스트를 반복적으로 이용한 소프트웨어 방법론으로 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 실제 코드

2022년 12월 7일
·
0개의 댓글
·