For example, I have this method in UserService:
  @Override
  @Transactional
  public UserDto create(UserDto userDto) {
    User dbUser = userRepository.findOne(userDto.getId());
    if (dbUser != null) {
      throw new AuthException(AuthException.ErrorCode.DUPLICATE_USER_EXCEPTION);
    }
    User oneByLogin = userRepository.findOneByLogin(userDto.getLogin());
    if (oneByLogin != null) {
      throw new AuthExceptionAuthException.ErrorCode.DUPLICATE_LOGIN_EXCEPTION);
    }
    User newUser = new User();
    newUser.setGuid(UUID.randomUUID().toString());
    newUser.setInsertDate(new Date());
    newUser.setFirstName(userDto.getFirstName());
    newUser.setLastName(userDto.getLastName());
    newUser.setLogin(userDto.getLogin());
    newUser.setPassword(userDto.getPassword());
    newUser.setAuthToken(TokenGenerator.nextToken());
    newUser.setAuthTokenCreatedDate(new Date());
    User savedUser = userRepository.save(newUser);
    userDto.setAuthToken(savedUser.getAuthToken());
    log.info("User {0} created", savedUser.getLogin());
    return userDto;
  }
How can I create unit test for this method? I tried next:
  @Test
  public void createUser() {
    UserDto userDtoRequest = new UserDto();
    userDtoRequest.setLogin("Alex");
    userDtoRequest.setPassword("123");
    UserDto found = userService.create(userDtoRequest);
    assertThat(found.getAuthToken()).isNotEmpty();
}
I have next logic:
- Test start
- User dbUser = userRepository.findOne(userDto.getId());dbUser = NULL
- if (dbUser != null) and- if (oneByLogin != null)skip
- create new user and set data
- User savedUser = userRepository.save(newUser);savedUser = NULL
On this step, I have a problem because I cannot mock userRepository.save(newUser).
newUser create inside the method. and test fail.
savedUser.getAuthToken() - savedUser == NULL
I can rewrite:
    userRepository.save(newUser);
    userDto.setAuthToken(newUser.getAuthToken());
    log.info("User {0} created", newUser.getLogin());
    return userDto;
but what if I want to use the returned object savedUser?
 
     
     
     
     
     
    