[기본기] 5-1. 회원 도메인 구현, 테스트

khyojun·2022년 9월 6일
1
post-thumbnail

본 게시글은 김영한님의 스프링 핵심 원리 기본편을 정리한 글입니다.


📌 회원 엔티티

📂 회원 등급

public enum Grade {
    Basic,
    VIP;
}

📂 회원 엔티티

public class Member {

    private Long memberId;
    private String name;
    private Grade grade;

    public Member(Long memberId, String name, Grade grade) {
        this.memberId = memberId;
        this.name = name;
        this.grade = grade;
    }

    public Long getMemberId() {
        return memberId;
    }

    public void setMemberId(Long memberId) {
        this.memberId = memberId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Grade getGrade() {
        return grade;
    }

    public void setGrade(Grade grade) {
        this.grade = grade;
    }
}

📌 회원 저장소

📂 회원 저장소 인터페이스

public interface MemberRepository {
    void save(Member member);
    Member findById(Long memberId);
}

📂 메모리 회원 저장소 구현체

public class MemoryMemberRepository implements MemberRepository{

    private static Map<Long, Member> store = new HashMap<>();

    @Override
    public void save(Member member) {
        store.put(member.getMemberId(), member);
    }

    @Override
    public Member findById(Long memberId) {
        return store.get(memberId);
    }
}

📌 회원 서비스

📂 회원 서비스 인터페이스

public interface MemberService {
    void join(Member member);
    Member findMember(Long memberId);
}

📂 회원 서비스 구현체

public class MemberServiceImpl implements MemberService{

    MemberRepository memberRepository = new MemoryMemberRepository();

    @Override
    public void join(Member member) {
        memberRepository.save(member);
    }

    @Override
    public Member findMember(Long memberId) {
        return memberRepository.findById(memberId);
    }
}

📌 회원 도메인 테스트

public class memberTest {
    MemberService memberService = new MemberService();

    @Test
    void 회원가입(){
        //given

        //when
        Member member = new Member(1L, "memberA", Grade.VIP);
        memberService.join(member);

        Member findMember= memberService.findMember(1L);

        //then
        Assertions.assertThat(findMember).isEqualTo(member);
    }
}

출처

  1. 김영한님의 스프링 핵심 원리 기본편(https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8)
profile
코드를 씹고 뜯고 맛보고 즐기는 것을 지향하는 개발자가 되고 싶습니다

0개의 댓글