회원 관리 예제 - 회원 서비스 테스트

2022. 7. 30. 14:012022/Spring

테스트 할 클래스 클릭 후, ctrl+shift+t 하면 아래와 같이 테스트 껍데기를 만들기 위한 생성 창이 뜨게 된다.

회원가입 테스트

 

**** 테스트는 정상 플로우도 중요하지만 예외 플로우가 훨씬 중요하다. ****

중복회원 예외 테스트

Try/Catch를 이용한 예외 처리 성공 여부 테스트

 

assertTtrows를 이용한 예외 처리 성공 여부 테스트

 

 

* 전체 서비스 테스트 * 

이전 MemoryMemberRepository 에서 clear를 해줬던 것 처럼, 여기서도 두번의 서비스 로직(회원가입 & 중복_회원_예외)을 돌면서 중복 이름이 DB에 쌓여 생기는 에러를 방지하기 위해 clear를 해주어야만한다.

 

static은 인스턴스와 상관없이 클래스에 붙는다.

따라서 MemoryMemberRepository의 store을 각각 new로 새롭게 만들게 되면 서로 다른 repository가 생성된다.

따라서 MemberServiceTest에서 new로 생성한 memoryMemberRepository와 기존의 MemberService의 

memberRepository가 서로 다른 repository를 가지고 있게 된다.

이때, new로 다른객체를 생성하게 되면 다른 인스턴스로 보기 때문에 내용물이 달라질 수 있는 문제가 발생할 수 있다.

 

이를 해결하기 위한 방법이 바로 "DI : Dependency Injection" 이다.

기존의 memberRepository 직접 생성 부분을 아래와 같이 외부에서 만들도록 의존관계를 주입한다.

MemberService.java

 

MemberServiceTest.java

그렇게 되면 Test에서는  별개로 new로 repository를 생성했던 이전과 달리 MemberService에 repository를 주입하면 동일한 저장소에서 동작하게 된다.

 

* 자세한 내용은 다음 챕터에서 *