Cześć wszystkim ! Nie mogę skumać jak przetestować void metodę. Z tego co rozumiem mogę korzystać z doXXX.when() metody oraz verify, natomiast co jeżeli chcę pobrać
obiekt (var user = userService.getByActivationToken(token)) do testowej metody, żeby sprawdzić jego pola? Jak bym mógł dostać obiekt Usera
Metoda z serwisa
@Override
public void confirmPasswordAndRegistration(String token) {
if (token == null) throw new PasswordException("Token is null, password and registration are not confirmed");
var user = userService.getByActivationToken(token);
user.setActivationToken(null);
user.setEnabled(true);
userService.edit(user);
}
Klasa testowa
@ExtendWith(SpringExtension.class)
class PasswordServiceImplTest {
private final String token = "fb17fe76-6e4f-4a01-902a-10b79ffc78c7";
@Mock
private PasswordMailSender passwordMailSender;
@Mock
private UserService userService;
@Mock
private BCryptPasswordEncoder passwordEncoder;
@InjectMocks
private PasswordServiceImpl passwordService;
private User mockedUser;
@BeforeEach
void setUp() {
mockedUser = UserMocked.createMockedUser();
}
@Test
@DisplayName("Confirm password and registration test is successful")
void confirmPasswordAndRegistrationIsSuccessful() {
doReturn(mockedUser).when(userService).getByActivationToken(token);
passwordService.confirmPasswordAndRegistration(token);
** // Dalej chcę pobrać mockedUser i przetesować jego pola i potem przez verify, sprawdzić ile razy zostało wywołano metody wewnątrz public void confirmPasswordAndRegistration(String token).**
}
}