【问题标题】:Unit test RxJava Observables单元测试 RxJava Observables
【发布时间】:2017-12-22 04:29:14
【问题描述】:

我是 RxJava 的新手。我已经编写了 Observable,它使用 restTemplate 调用了一个 rest api。我想对在服务类中创建的 Observables 进行单元测试。 我知道使用 MockMVC 对其余 api 控制器和服务类进行单元测试。因此需要有关如何使用 Mockito 或 MockMVC 或任何可用框架测试我在控制器中的异步端点和服务类中的 Observalbes 的帮助。

这是我的代码

SampleController.java

@RequestMapping(value = "/", method = RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public DeferredResult<List<Response>> getresponse() {
        DeferredResult<List<Response>> response = new DeferredResult<>();
            service
              .fetchJson()
              .subscribe(result -> response.setResult(result));
        return response;
    }

Service.java

@Override
    public Observable<List<Response>> fetchJson() {
        Observable<List<Response>> list = Observable.<List<Response>>create(
                subscriber -> subscriber.onNext(this.invokeRestCall(APIURL)))
                .subscribeOn(Schedulers.from(executor));*/
        return list;
    }
private List<Response> invokeRestCall(String APIURL) {  

    Response[] responses = restTemplate.getForObject(APIURL, Response[].class);
    return Arrays.stream(responses).collect(Collectors.toList());
}

如果有人为测试异步的控制器端点以及服务类中的 Observable 编写了一个单元测试用例。

【问题讨论】:

    标签: rx-java


    【解决方案1】:

    我知道的一种方法是注入调度程序,这样在测试时只需将 Schedulers.trampoline() 注入所有调度程序,这样您的测试将在同一个线程上运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      • 1970-01-01
      • 2016-02-20
      • 2020-09-05
      • 2019-12-22
      相关资源
      最近更新 更多