У меня небольшая проблема с настройкой правильных модульных тестов для моих интерактивных классов в моем приложении для Android. В этих классах у меня есть «бизнес-логика» моего приложения.
Вот один из таких классов:
public class ChangeUserPasswordInteractor {
private final FirebaseAuthRepositoryType firebaseAuthRepositoryType;
public ChangeUserPasswordInteractor(FirebaseAuthRepositoryType firebaseAuthRepositoryType) {
this.firebaseAuthRepositoryType = firebaseAuthRepositoryType;
}
public Completable changeUserPassword(String newPassword){
return firebaseAuthRepositoryType.getCurrentUser()
.flatMapCompletable(firebaseUser -> {
firebaseAuthRepositoryType.changeUserPassword(firebaseUser, newPassword);
return Completable.complete();
})
.observeOn(AndroidSchedulers.mainThread());
}
}
Вот тест, который я написал:
@RunWith(JUnit4.class)
public class ChangeUserPasswordInteractorTest {
@Mock
FirebaseAuthRepositoryType firebaseAuthRepositoryType;
@Mock
FirebaseUser firebaseUser;
@InjectMocks
ChangeUserPasswordInteractor changeUserPasswordInteractor;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
RxAndroidPlugins.reset();
RxAndroidPlugins.setInitMainThreadSchedulerHandler(schedulerCallable -> Schedulers.trampoline());
}
@Test
public void changeUserPassword() {
Mockito.when(firebaseAuthRepositoryType.getCurrentUser()).thenReturn(Observable.just(firebaseUser));
Mockito.when(firebaseAuthRepositoryType.changeUserPassword(firebaseUser, "test123")).thenReturn(Completable.complete());
changeUserPasswordInteractor.changeUserPassword("test123")
.test()
.assertSubscribed()
.assertNoErrors()
.assertComplete();
}
}
Проблема, с которой я столкнулся, заключается в том, что этот тест завершается без ошибок, даже если я меняю пароль с «test123» при вызове changeUserPassword на что-то другое, или если я в mock возвращаю «Completable.onError (new Throwable ()» )».
Я не могу понять это поведение. Любые предложения, как настроить тест?