单元测试RXJAVA可观察到



我是RXJAVA的新手。我已经写了可观察的,它使用RESTTEMPLATE调用REST API。我想单元测试我在服务类中创建的可观察物。我知道使用MockMVC测试了REST API控制器和服务类。因此,对于如何使用Mockito或MockMVC或任何可用的框架来测试如何在控制器中测试我的异步端点的帮助。

这是我的代码

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

如果有人写了用于测试控制器端点,请放置一个单位测试用例,该端点是异步的,以及在服务类中可观察的。

我知道的一种方式是注入调度程序,这样,当您仅测试仅注入Schedules.trampoline()到所有调度程序时,您的测试将在同一线程上运行。

最新更新