@ExtendWith(MockitoExtension.class)
public class AuthServiceTest {
@Mock
private UserRepository userRepository;
@Autowired
private PasswordEncoder passwordEncoder;
@InjectMocks
private UserService userService;
@Test
void 회원가입(){
// given
final User newUser = User.builder()
.email("ijieun@gmail.com")
.password("Password123@")
.userRole(UserRole.USER)
.build();
// when
final User savedUser = userRepository.save(newUser);
// then
assertThat(savedUser.getEmail()).isEqualTo("ijieun@gmail.com");
assertThat(savedUser.getPassword()).isEqualTo("Password123@");
assertThat(savedUser.getUserRole()).isEqualTo(UserRole.USER);
}
// when
final User savedUser = userRepository.save(newUser);
savedUser 가 null을 반환함.
Mock 객체는 따로 설정하지 않으면 아무 동작도 하지 않음.
userRepository는 @Mock으로 선언되었기 때문에 실제 save() 메서드가 동작하지 않는다.
when(userRepository.save(any(User.class))).thenReturn(newUser);
userRepository.save(어떤 User 객체든지)가 호출되면 무조건 newUser를 반환하도록 설정하여 해결.