Я пытаюсь проверить это наблюдаемое для запроса на вход, но подписчики onNext и onCompleted методы никогда не вызываются.Почему мой RxJava Observable не завершен?
return mDeviceRepository.getDeviceId()
.flatMap(new Func1<String, Observable<LoginResponse>>() {
@Override
public Observable<LoginResponse> call(String deviceId) {
return mAuthRepository.login(deviceId, mUsername, mHashedPassword);
}
})
.flatMap(new Func1<LoginResponse, Observable<LoginResponse>>() {
@Override
public Observable<LoginResponse> call(LoginResponse loginResponse) {
mSessionRepository.storeSession(UserSession.fromLoginReponse(loginResponse));
mUserRepository.storeUser(loginResponse.getUser());
return Observable.just(loginResponse);
}
});
Мой тест выглядит следующим образом:
loginUseCase.setCredentials("testuser", "testpassword");
when(mockDeviceRepository.getDeviceId()).thenReturn(Observable.just("testdeviceid"));
when(mockAuthRepository.login("testdeviceid", "testuser", "testpassword")).thenReturn(Observable.just(new LoginResponse()));
testSubscriber = new TestSubscriber();
loginUseCase.buildUseCaseObservable().toBlocking().subscribe(testSubscriber);
testSubscriber.assertCompleted();
testSubscriber.assertValueCount(1);
У меня нет никаких NullPointers. Логин mehod заштрихован с использованием mockito: when (mockAuthRepository.login («testdeviceid», «testuser», «testpassword»)). ThenReturn (Observable.just (new LoginResponse())); – timoschloesser
Вы вызываете mAuthRepository.login (deviceId, mUsername, mHashedPassword) - откуда берутся два последних аргумента? Являются ли они «testuser», «testpassword»? –
Это переменные-члены класса, создающие наблюдаемый. Я инициализирую их, прежде чем приступить к методу входа в систему. Я соответствующим образом отредактировал свой вопрос. – timoschloesser