gpt4 book ai didi

android - 用于典型 REST 查询的 rxjava android 测试

转载 作者:行者123 更新时间:2023-11-30 02:38:35 27 4
gpt4 key购买 nike

我正在尝试在 REST 服务器和我的 Android 应用程序之间执行集成测试。简而言之,我的应用程序执行获取查询以获取一组 json 元素(“场景”)。我的测试通过了,但几乎是优雅和高效的,因为我引入了 10 秒的延迟。在我最后的断言之前,我更喜欢像'observationThread.join()'这样的东西,但到目前为止我还没有找到方法。有什么想法吗?

这是我的代码:

public void test_should_return_2_scenarios() throws InterruptedException {
ScenarioBoundary scenarioBoundary = new ScenarioBoundary();
final List<Scenario> scenarios = new LinkedList<Scenario>();
ImmediateScheduler immediateScheduler = (ImmediateScheduler) Schedulers.immediate();
scenarioBoundary.getObservableScenarios().subscribeOn(immediateScheduler).observeOn(immediateScheduler).subscribe(new Observer<Scenario>() {
@Override
public synchronized void onCompleted() {
Log.d(TAG, "Completed");
}

@Override
public synchronized void onError(Throwable e) {
Log.d(TAG, e.getMessage());
assertFalse("Error when testing scenario retrieval!", true);
}

@Override
public void onNext(Scenario scenario) {
Log.d(TAG, scenario.toString());
scenarios.add(scenario);
}
});
immediateScheduler.createWorker().schedule(new Action0() {
@Override
public void call() {
assertEquals(2, scenarios.size());
}
}, 10, TimeUnit.SECONDS);
}

最佳答案

您可以使用 toBlocking() 方法来阻塞 Observable 并获得最终结果。例如,

public void test_should_return_2_scenarios() throws InterruptedException {
ScenarioBoundary scenarioBoundary = new ScenarioBoundary();
List<Scenario> scenarios = scenarioBoundary.getObservableScenarios().toList().toBlocking().single();
List<Scenario> expectedScenarios = ...;
assertEquals(expectedScenarios, scenarios);
}

更多信息:https://github.com/ReactiveX/RxJava/wiki/Blocking-Observable-Operators

关于android - 用于典型 REST 查询的 rxjava android 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26117137/

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