Java 8 测试可观察的.FlatMap Mockito
我一直在网上搜索,但还没有找到解决方案(UnitTest和Mockito上新增) 是否可以测试一个方法,该方法返回一个服务调用,并在返回它之前操纵它的结果?榜样Java 8 测试可观察的.FlatMap Mockito,java-8,mockito,rx-java,Java 8,Mockito,Rx Java,我一直在网上搜索,但还没有找到解决方案(UnitTest和Mockito上新增) 是否可以测试一个方法,该方法返回一个服务调用,并在返回它之前操纵它的结果?榜样 public Observable<Reports> getUserReports(Integer userId) { return serviceClient .getReports(userId) .flatMap(serviceReports -> {
public Observable<Reports> getUserReports(Integer userId) {
return serviceClient
.getReports(userId)
.flatMap(serviceReports -> {
System.out.println("Testing inside flatMap"); <- never reach this line therefore duno if methods down here are invoked and work perfectly
final Observable<List<Report>> reports = getPendingReports(userId, serviceReports);
//More methods that modify/update information
return zip(observable1, observable2, observable3
(report1, report2, report3) -> {
updateReports(otherArguments, report1, report2, report3);
return serviceReports;
});
});
}
公共可观察的getUserReports(整数用户ID){
返回服务客户端
.getReports(用户ID)
.flatMap(服务报告->{
System.out.println(“内部平面图测试”){
更新报告(其他参数、报告1、报告2、报告3);
返回服务报告;
});
});
}
到目前为止我已经试过了
@Test
public void myTest(){
when(serviceClient
.getReports(anyInt()))
.thenReturn(Observable.just(reports));
Observable<Reports> result = mocketClass.getUserReports(userId)
}
@测试
公共无效myTest(){
何时(serviceClient)
.getReports(anyInt()))
.然后返回(可观察的、公正的(报告));
可观察结果=mocketClass.getUserReports(userId)
}
试过间谍和嘲弄,但到目前为止运气不好。任何提示或帮助都很好。要模拟getReports()
行为,您需要首先模拟serviceClient
,并将其传递到您的服务类中
举个例子:
@Test
public void myTest(){
// Given
final ServiceClient mockedServiceClient = Mockito.mock(ServiceClient.class);
when(mockedServiceClient
.getReports(anyInt()))
.thenReturn(Observable.just(reports));
// and create an instance of your class under testing with injected mocked service client.
final MyUserService userService = new MyUserService();
userService.setServiceClient(mockedServiceClient);
// When run a method under test
Observable<Reports> actualResult = userService.getUserReports(userId)
// Then
// actualResult to be verified.
}
@测试
公共无效myTest(){
//给定
最终ServiceClient mockedServiceClient=Mockito.mock(ServiceClient.class);
何时(mockedServiceClient)
.getReports(anyInt()))
.然后返回(可观察的、公正的(报告));
//并使用注入的模拟服务客户端创建正在测试的类的实例。
final MyUserService userService=new MyUserService();
userService.setServiceClient(mockedServiceClient);
//当运行测试中的方法时
可观察的actualResult=userService.getUserReports(用户ID)
//然后
//实际结果有待验证。
}