模拟球衣客户

问题描述

我正在尝试模拟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 (将#修改为@)