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 |