해결된 질문
작성
·
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
우선 해당 테스트코드에는 문제가 보이진 않고, 에러메시지만으로는 확인이 어렵네요.
테스트코드를 구성하는 다른 코드들에서 문제가 발생하지 않나 싶습니다.
프로젝트 코드를 확인해봐야 알 것 같은데요,
전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.
구글 드라이브 업로드 방법은 다음을 참고해주세요.
주의: 업로드시 권한 문제 꼭 확인해주세요
.
감사합니다.
올리신 코드는 강의와 똑같이 따라하셨는데, 안에서 사용하는 코드가 달라서 테스트가 실패하네요 ^^
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("이미 존재하는 회원입니다.");
});
}
https://drive.google.com/file/d/13nQDEh4dRAkeq4RnMBUKZ_1pWIf_E7I1/view?usp=sharing
링크 공유 드립니다. 감사합니다 !