单元测试RxJava Observables

时间:2017-12-22 04:29:14

标签: rx-java

我是RxJava的新手。我编写了Observable,它使用restTemplate调用rest api。我想对我在服务类中创建的Observable进行单元测试。 我知道使用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。

1 个答案:

答案 0 :(得分:0)

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