[Spring Boot] 회원 관리 예제#4

박정현·2022년 2월 23일
0

spring boot

목록 보기
4/7
post-thumbnail

출처 : 강의를 보고 이해한 내용을 게시물로 작성했습니다
스프링 입문 강의

회원 관리 만들기

생성 폴더

  • domain
  • repository
  • service

domain

  • Member :
    간단한 멤버 id,name 해당하는 getter,setter만 보유

repository

  • MemberRepository :
    인터페이스 파일로 구현했기 때문에 추상 메서드들로 이루어져있음
    save(),findyById(),findByName(),findAll()로 구성되어있다

    추상클래스 , 인터페이스의 차이점은 둘다 추상메서드를 보유하고있지만
    인터페이스는 구현된게 아무것도없는 추상메서드로만 이루어져있고
    추상클래스는 일반메서드도 있지만 추상메서드를 보유하고 있는 클래스이다

  • MemoryMemberRepository : MemberRepository 를 상속받은 클래스
    각 기능들을 실제로 구현한다

    Map을 이용해서 객체들을 저장한다
    Optional을 이용해서 null을 관리한다

service

  • MemberService : 실제 비지니스 로직이 구현되는 클래스
    회원가입(중복회원검증),회원조회 의 기능들로 구성되어있다

회원 관리 Test

테스트 케이스

  • 개발한 기능을 실행해서 main메서드에서 실행해볼 수 있지만
    준비하는데 오래걸리고 반복 실행하기가 어렵고 '여러 테스트를 한번에'
    실행하기 어렵다는 단점이있다 이러한 문제를 해결하기 위해서 사용한다
  • 테스트 파일은 같은 폴더 같은 파일명에 Test라고 뒤에 붙여서 생성한다
  • ctrl + shift + t 로 편리하게 생성할 수 있다
  • 각기능 앞에 @Test
  • 작성할 대 given,when,then 으로 나누어놓고 작성하면 쉽다

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("이미 존재하는 회원입니다");
//이런식으로 예외 문구를 검증할 수 있다
profile
빠샤

0개의 댓글

관련 채용 정보