개발하는 두부

*Exception to be thrown, but nothing was thrown

by 뚜부니

회원 가입 시 중복 이메일이 존재하면 CustomException이 발생하도록 구현하고 테스트를 작성하였는데,

아래와 같이 Exception이 발생하지 않았다는 에러가 발생했습니다.

CustomException to be thrown, but nothing was thrown.

해당 이슈는 Exception을 try-catch로 감쌌거나, 테스트 하는 메소드 설정이 잘못된 경우 등 다양한 원인이 존재하며, 그에 따라 다양한 해결 방법이 있다고 합니다.

저는 Exception을 발생시키는 메서드가 아닌 다른 메서드로 테스트를 해서 발생한 이슈였습니다. 이렇게 간단한 이유였다니.. 😂😂

테스트하는 메서드를 변경해줍시다..ㅎㅎ

Before

@Test @DisplayName("이메일 중복 예외 테스트")
public void duplicateEmail() {
    // given
    Member member1 = Member.builder()
            .email("test@email.com")
            .password("password")
            .name("name")
            .phone("010-1234-5678")
            .nickname("nickname")
            .build();
    memberRepository.save(member1);

    Member member2 = Member.builder()
            .email("test@email.com")
            .password("password")
            .name("name")
            .phone("010-1234-5678")
            .nickname("nickname")
            .build();

    // when
    CustomException e = assertThrows(CustomException.class, () -> memberRepository.save(member2));

    //then
    assertThat(e).isEqualTo(new CustomException(ErrorCode.DUPLICATE_EMAIL));
}

After

@Test @DisplayName("이메일 중복 예외 테스트")
public void duplicateEmail() {
    // given
    Member member1 = Member.builder()
            .email("testcode2@email.com")
            .password("password")
            .name("name")
            .phone("010-1234-5678")
            .nickname("nickname2")
            .build();
    memberRepository.save(member1);

    String email = "testcode2@email.com";
    String password = "password";
    String name = "name";
    String phone = "010-1234-5678";
    String nickname = "nickname3";
    SignupReq member2 = new SignupReq(email, password, name, phone, nickname);

    // when
    CustomException e = assertThrows(CustomException.class, () -> memberService.signup(member2));

    //then
    assertThat(e.getErrorCode()).isEqualTo(ErrorCode.DUPLICATE_EMAIL);
}

사소한 이슈가 발생하지 않도록 더 주의하며 테스트 코드를 작성 해야겠네요🥲🥲

참고

블로그의 정보

개발하는 두부

뚜부니

활동하기