gpt4 book ai didi

android - 为什么我的 RxJava Observable 没有完成?

转载 作者:行者123 更新时间:2023-11-29 19:49:02 28 4
gpt4 key购买 nike

我正在尝试针对登录请求测试此可观察对象,但永远不会调用订阅者的 onNext 和 onCompleted 方法。

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);

最佳答案

在 TestSubscriber 中用 assertTerminalEvent() 代替 assertCompleted() 怎么样?您的所有运算符都在同一个线程上运行,因此如果达到 TestSubscriber 断言,则会在流中的某处抛出异常

关于android - 为什么我的 RxJava Observable 没有完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37319004/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com