我是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()到所有调度程序时,您的测试将在同一线程上运行。