본 블로그는 해당 스프링 강의(김영한) 수강 후, 작성된 게시물입니다.
회원 서비스 개발
회원 서비스는 회원 레포지토리와 도메인을 활용해서 실제 비즈니스 로직을 작성하는 화면
service와 repository 함수 이름 생성
repository : 단순한 기계적으로 개발스럽게 이름 사용 (그저 데이터를 넣었다 빼는 동작을 일컫도록)
service : 비즈니스에 의존적으로 설계 (비즈니스에 가까운 용어를 사용하여, 명확한 역할과 매칭되도록 )
1. 폴더 구성
2. 회원가입 생성
▼ 회원가입 생성 함수
3. 회원 조회 생성
회원 서비스 테스트
1. 테스트 케이스 생성
① 서비스 클래스에서 단축키를 사용하여 Create New Test를 클릭한다.
② Create New Test 생성
③ 테스트 케이스 클래스 생성
2. 테스트 케이스 작성
테스트의 구조
1. given (제공)
2. when (조건)
3. then (결과)※ 테스트는 과감하게 한글로 작성해도 된다!!
① 회원가입 테스트 작성
member.setName("hello"); // member에 hello라는 이름을 넣고,
Long saveId = memberService.join(member); // 회원가입 후, 회원가입한 id를 반환받는다.
Member findMember = memberServie.findOne(saveId).get(); // 해당 아이디의 member로 반환받는다.
assertThat(member.getName()).isEqualTo(findMember.getName()); // 회원가입하려는 이름(member.getName())과 회원가입이 완료된 이름(findMember.getName())이 일치한지 검증한다.
▽ Assertions
Assertions는 assertj를 사용
▽ static import
Assertions를 static import를 하여 사용한다.
② 중복 회원가입 테스트 작성
→ 회원가입에서 중요한 중복검증을 따로 작성하여 테스트 확인
주의!!!!
테스트에서 항상 데이터 클리어를 해주어야 한다.
문제점 발견!!!
MemberService에서 new MemoryMemberRepository()랑, MemberServiceTest에서 new MemoryMemberRepository()가 서로 다른 레포지토리라는 점.
물론 MemoryMemberRepository에 store를 static으로 선언하여 상관은 없지만, static으로 선언하지 않으면 다른 DB가 되어 문제가 생기게 된다.
해결 방법 - DI(dependency Injection)
MemberService에서 new로 생성한 memoryMemberRepository를 삭제하고, 그 아래에 생성자를 생성한다.
MemberServiceTest에서 @BeforeEach 어노테이션을 선언하여 메소드 실행 전, 실행하는 함수를 작성한다.
'IT > Spring' 카테고리의 다른 글
[Spring] Spring Legacy project 없을 경우 해결 방법 (0) | 2023.07.10 |
---|---|
[Spring] 빌드 도구 Maven VS Gradle (2) | 2023.01.13 |
[Spring] 회원관리(3) 회원 리포지토리 테스트 케이스 작성 (0) | 2022.07.24 |
[Spring] 회원관리(2) 회원 도메인과 리포지토리 만들기 (0) | 2022.06.30 |
Spring[7] - Spring MVC 소개 (0) | 2022.06.30 |