04.09 TIL (테스트 코드)

2023. 4. 9. 18:55개발일지

테스트코드 회원가입 작성해서 성공했을 때 조금은 머리속에서 정리가 된거 같았지만, 로그인에서는 바로 오류..

@Test
public void 유저로그인() {
    String email = "";
    String password = "";
    // given
    Member member = Member.builder()
            .email("c@naver.com")
            .password(passwordEncoder.encode("@rjsgh1212"))
            .nickname("tester")
            .loginType(LoginType.USER)
            .build();
    memberRepository.save(member);

    TokenDto tokenDto = new TokenDto("access_token", "refresh_token");
    when(memberRepository.findByEmail(email)).thenReturn(Optional.of(member));
    when(passwordEncoder.matches(password, member.getPassword())).thenReturn(true);
    when(jwtUtil.createAllToken(email)).thenReturn(tokenDto);

    HttpServletResponse httpServletResponse = mock(HttpServletResponse.class);

    // when
    LoginRequestDto loginRequestDto = new LoginRequestDto(email, password);
    ApiResponseDto<LoginResponseDto> apiResponseDto = memberService.login(loginRequestDto, httpServletResponse);
    LoginResponseDto loginResponseDto = apiResponseDto.getResponse();

    // then
    assertNotNull(loginResponseDto);
    assertEquals(member.getNickname(), loginResponseDto.getNickname());
    assertEquals(member.getLoginType(), loginResponseDto.getLoginType());
    verify(jwtUtil, times(1)).setHeader(eq(httpServletResponse), any(TokenDto.class));

}

로직을 이렇게 짯지만 when에서 memberService.login 부분에서 'com.sparta.petplace.exception.CustomException: 사용자가 없습니다' 예외 발생!

1차 시도 : 예외를 직접 처리

    // 사용자가 없을 경우 CustomException 발생
    String nonExistEmail = "nonexist@naver.com";
    LoginRequestDto nonExistLoginRequestDto = new LoginRequestDto(nonExistEmail, password);
    assertThrows(CustomException.class, () -> {
        memberService.login(nonExistLoginRequestDto, httpServletResponse);
    }, Error.NOT_EXIST_USER.getMessage());

예외를 직접 처리하는 로직을 추가했으나, 실패

2차 시도 : when의 import 지웠다가 다시 다시 수기로 import 해줬습니다.

결과 : 실패 (똑같은 에러 : com.sparta.petplace.exception.CustomException: 사용자가 없습니다)

3차 시도 : JUnit4 -> JUnit5 버전 변경

com.sparta.petplace.exception.CustomException: 사용자가 없습니다

	at com.sparta.petplace.member.service.MemberService.login(MemberService.java:94)
	at com.sparta.petplace.member.service.MemberServiceLoginTest.유저로그인3(MemberServiceLoginTest.java:171)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	...

역시 똑같은 실패..

갑자기 다른게 오류가 생겨서 테스트코드 너 대기 이거 해결하고 다시해보자!

'개발일지' 카테고리의 다른 글

04.12 TIL(Querydsl 성능 향상)  (0) 2023.04.13
04.10 TIL  (0) 2023.04.10
04.08 TIL (테스트 코드)  (0) 2023.04.09
04.07 (Refactoring)  (0) 2023.04.07
04.06 TIL (Nginx)  (0) 2023.04.07