问题描述
我正在尝试模拟Jeresy网络服务调用。我已经将WebService.Resource get()方法存根了。我正在获取ClientHandlerException。看起来它在调用real方法而不是存根。我是否错过了方法的存根方式?
何时(webResourceBuilderMock.get(ClientResponse.class))。thenReturn(clientResponseMock);
例外: 嵌入的异常:包装的异常类-> com.sun.jersey.api.client.ClientHandlerException类 com.sun.jersey.api.client.ClientHandlerException:javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到有效的证书路径要求的目标 在com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:155) 在com.sun.jersey.api.client.filter.LoggingFilter.handle(LoggingFilter.java:217) 在com.sun.jersey.api.client.Client.handle(Client.java:652) 在com.sun.jersey.api.client.WebResource.handle(WebResource.java:682) 在com.sun.jersey.api.client.WebResource.access $ 200(WebResource.java:74) 在com.sun.jersey.api.client.WebResource $ Builder.get(WebResource.java:509) 位于xxx.xx.xx.xx.xxx.xxxx.WebServiceClientImpl1.getCreditCardDetails(WebServiceClientImpl1.java:173) 位于xxx.xx.xx.xx.xxx.xxxx.WebServiceClientTest.testAWebServiceClient(WebServiceClientTest.java:121) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) 在java.lang.reflect.Method.invoke(未知来源) 在org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:50) 在org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) 在org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) 在org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.jav
WebServiceClientImpl.java
String wsURL = appendResorcePath("/xx/xx/xx/" + id + "/xxx");
ObjectMapper objectMapper = new ObjectMapper();
ClientConfig clientConfig = new DefaultClientConfig();
clientConfig.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,Boolean.TRUE);
Client restClient = Client.create(clientConfig);
WebResource webResource = restClient.resource(wsURL);
restClient.addFilter(new com.sun.jersey.api.client.filter.LoggingFilter(printStream));
WebResource.Builder webResourceBuilder = webResource.accept(MediaType.APPLICATION_JSON);
webResourceBuilder = webResourceBuilder.header(Constants.AUTHORIZATION,Constants.BASIC + createAuthString()).type(MediaType.APPLICATION_JSON_TYPE);
clientResp = webResourceBuilder.get(ClientResponse.class);
测试类代码:
WebResource webResourceMock = Mockito.mock(WebResource.class);
WebResource.Builder webResourceBuilderMock = Mockito.mock(WebResource.Builder.class);
ClientResponse clientResponseMock = Mockito.mock(ClientResponse.class);
clientResponseMock.setStatus(200);
ObjectMapper objectMapperMock = Mockito.mock(ObjectMapper.class);
when(webResourceMock.accept(MediaType.APPLICATION_JSON)).thenReturn(webResourceBuilderMock);
when(webResourceBuilderMock.header(ArgumentMatchers.anyString(),ArgumentMatchers.anyString())).thenReturn(webResourceBuilderMock);
when(webResourceBuilderMock.get(ClientResponse.class)).thenReturn(clientResponseMock );
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)