이 경우 계속해서 argument mismatch가 떠서 test가 진행되지 않았다. 결국 이 문제를 해결하기 위해 stubbing 시 any()를 파라미터로 전달하였다. 사실 이게 맞는 해결 방법인지는 모르겠다. 후에 다른 방법을 찾으면 다시 기록해야겠다.
import static org.mockito.ArgumentMatchers.any
.
.
when(accountRepository.save(any())).thenReturn(account);
쉽게 어떤 값은 주던간에 동작할 수 있도록 하는 것이다.
// 예외 발생 테스트 코드
@Test
void 회원가입_실패_이메일_중복() {
try {
when(userRepository.isExist(TestUser.EMAIL)).thenThrow(new EmailAlreadyInUseException());
userService.join(userJoinRequestDto);
}catch (EmailAlreadyInUseException e) {
verify(userRepository).isExist(TestUser.EMAIL);
verify(userRepository, never()).save(userJoinRequestDto);
}
}
thenThrow()를 통해 예외를 발생시키고 필요한 메서드는 잘 동작하고 필요 없는 메서드는 잘 동작하지 않는지 확인할 수 있었다.