我是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。
答案 0 :(得分:0)
我知道的一种方法是注入调度程序,当您测试时,只需将Schedulers.trampoline()注入所有调度程序,这样您的测试就会在同一个线程上运行。