출처 : 강의를 보고 이해한 내용을 게시물로 작성했습니다
스프링 입문 강의
생성 폴더
domain
repository
추상클래스 , 인터페이스의 차이점은 둘다 추상메서드를 보유하고있지만
인터페이스는 구현된게 아무것도없는 추상메서드로만 이루어져있고
추상클래스는 일반메서드도 있지만 추상메서드를 보유하고 있는 클래스이다
service
테스트 케이스
MemoryMemberRepositoryTest
@AfterEach 를 사용하면 각 메소드가 테스트된이후 해당 메소드가 각각 실행된다 이를 이용해서 각 테스트가 끝날때마다 clearStore()를 이용해서 저장소를 비워준다
save() 테스트:
Attentions.assertThat().isEqualsTo(b)를 이용해서
a,b가 같은 값인지 검증해준다 ,저장하는 값과 저장된 값이 맞는지 검증
Attentions의 경우 alt+enter을 이용해서 스태틱 임포트할 수 있다
MemberServiceTest
MemoryMemberRepository memoryMemberRepository =
new MemoryMemberRepository;
//이렇게 생성하면 그냥 MemberService와는 다른 객체가 되어버린다
//그래서 MemberService를
//외부에서 입력받도록 바꿈
public MemberService(MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}
//이후에
//테스트하기전마다 실행되는 코드
@BeforeEach
public void beforeEach(){
//DI
memoryMemberRepository = new MemoryMemberRepository(); //생성후
//memberService 에 넣어준다
//이러면 같은 repository를 외부에서 넣어주기때문에 같은걸 사용가능
memberService = new MemberService(memoryMemberRepository);
}
// (터질 예외 , 로직)
Assertions.assertThrows((IllegalStateException.class, () -> memberService.join(member2));
assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다");
//이런식으로 예외 문구를 검증할 수 있다