인프런 커뮤니티 질문&답변

haeyoon님의 프로필 이미지
haeyoon

작성한 질문수

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

회원 서비스 테스트

회원 서비스 테스트 강의 에러

해결된 질문

작성

·

770

3

회원 서비스 테스트 강의 들으면서

코드를 똑같이 따라 쳤는데 아래 에러가 납니다 ㅠ ,,

혹시 몰라 코드도 첨부합니다.

package hello.hellospring.service;

import hello.hellospring.domain.Member;
import hello.hellospring.repository.MemoryMemberRepository;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;


class MemberServiceTest {

    MemberService memberService;
    MemoryMemberRepository memberRepository;

    @BeforeEach
    public void beforeEach() {
        memberRepository = new MemoryMemberRepository();
        memberService = new MemberService(memberRepository);
    }

    @AfterEach
    public void afterEach() {
        memberRepository.clearStore();
    }

    @Test
    void 회원가입() {
        // given
        Member member = new Member();
        member.setName("hello");

        // when
        Long saveId = memberService.join(member);

        // then
        Member findMember = memberService.findOne(saveId).get();
        assertThat(member.getName()).isEqualTo(findMember.getName());
    }

    @Test
    public void 중복_회원_예외() {
        // given
        Member member1 = new Member();
        member1.setName("spring");

        Member member2 = new Member();
        member2.setName("spring");

        // when
        memberService.join(member1);
        IllegalStateException e = assertThrows(IllegalStateException.class,
                () -> memberService.join(member2));

        assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");

//        try {
//            memberService.join(member2);
//        } catch (IllegalStateException e) {
//            assertThat(e.getMessage()).isEqualTo("이미 존재하는 회원입니다.");
//        }


        // then

    }

    @Test
    void findMembers() {
    }

    @Test
    void findOne() {
    }
}

답변 1

0

안녕하세요. 채혜윤님, 공식 서포터즈 OMG입니다.
.

우선 해당 테스트코드에는 문제가 보이진 않고, 에러메시지만으로는 확인이 어렵네요.

테스트코드를 구성하는 다른 코드들에서 문제가 발생하지 않나 싶습니다.

프로젝트 코드를 확인해봐야 알 것 같은데요,

전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

구글 드라이브 업로드 방법 링크

주의: 업로드시 권한 문제 꼭 확인해주세요
.
감사합니다.

haeyoon님의 프로필 이미지
haeyoon
질문자

올리신 코드는 강의와 똑같이 따라하셨는데, 안에서 사용하는 코드가 달라서 테스트가 실패하네요 ^^

memberRepository.findByName(member.getName())
    .ifPresent(m -> {
        try {
            throw new IllegalAccessException("이미 존재하는 회원입니다.");
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }
    });

아래와 같이 강의와 동일하게 변경하면 테스트 성공합니다.

private void validateDuplicateMember(Member member) {
    memberRepository.findByName(member.getName())
            .ifPresent(m -> {
                throw new IllegalStateException("이미 존재하는 회원입니다.");
            });
}

 

haeyoon님의 프로필 이미지
haeyoon
질문자

변경 하니까 잘 되네요 감사합니다 ~!

haeyoon님의 프로필 이미지
haeyoon

작성한 질문수

질문하기