【问题标题】:rxjava android testing for a typical REST queryrxjava android 测试典型的 REST 查询
【发布时间】:2014-09-30 09:20:52
【问题描述】:

我正在尝试在 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);
}

【问题讨论】:

    标签: android integration-testing rx-java


    【解决方案1】:

    您可以使用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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多