Junit无法返回模拟的响应并以null返回

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Junit无法返回模拟的响应并以null返回相关的知识,希望对你有一定的参考价值。

我是Mockito的新手,并尝试模拟Web服务响应,我确实在某种程度上尝试了模拟,但很少有对象可以工作,但是最后模拟的WebResponse始终返回null。

我要测试的服务方法:getWebResponse方法

public WebResponse getWebResponse(String crmNumber) throws JSONException, ExecutionException, WebException {
    Map<String, String> HEADERS_POST = new HashMap<String, String>() {
        {
            put(WebUtil.HEADER_CONTENT, WebUtil.CONTENT_JSON);
            put(WebUtil.HEADER_ACCEPT, WebUtil.CONTENT_JSON);
        }
    };
    JSONObject requestJson = new JSONObject();
    requestJson.put("crmNumber", crmNumber);
    requestJson.put("application", "ABCD");
    requestJson.put("feature", "DDDFL");
    // Using internal web service becuase device authentication is done separately.
    String url = CommonUtil.getServiceBaseUrl(true) + "/ett";
    WebServiceClient client = WebServiceClientRegistry.getClient(ApacheCustom.class);
    WebRequest webReq = new GenericWebRequest(WebRequestMethod.POST, url, HEADERS_POST, requestJson.toString());
    // Till here i m getting all mocked object (client also Mocked) after this stament the webRes is returning null;
    WebResponse webRes = client.doRequest(webReq);
    return webRes;
}

这里是测试方法:

@Test
public void getWebResponseTest() {
    mockStatic(CommonUtil.class);
    mockStatic(WebServiceClientRegistry.class);
    this.webResponse = new GenericWebResponse(200, "", new HashMap(), "");

    try {
        Mockito.when(CommonUtil.getServiceBaseUrl(true)).thenReturn("https://stage.com/service");
        WebRequest webReq = new GenericWebRequest(WebRequestMethod.POST, "https://stage.com/service", new HashMap(), "");
        Mockito.when(WebServiceClientRegistry.getClient(ApacheCustom.class)).thenReturn(client);
        Mockito.when(client.doRequest(webReq)).thenReturn(this.webResponse);
        WebResponse wesponse = this.ServiceResponse.getWebResponse("Number");
        Assert.assertEquals(wesponse.getStatusCode(), 200);
    } catch (Exception e) {
        Assert.fail();
    }
}

但是Test类的getWebResonse方法始终返回null响应(即使已被模拟)]]

我是Mockito的新手,试图模拟Web服务响应,但我确实在某种程度上尝试了模拟,但很少有Objects可以工作,但是最后模拟的WebResponse始终返回null。服务方式我是...

答案

您模拟client.doRequest如下:

以上是关于Junit无法返回模拟的响应并以null返回的主要内容,如果未能解决你的问题,请参考以下文章

(Laravel)无法从PayPal IPN获得响应,但模拟的响应返回已经过验证

React 本机开发服务器返回响应错误代码:500

JUnit getAnnotation返回null

@Mock MessageSource 在 Junit 测试中始终为 getMessage 返回 null

Angular 和 Firebase 云函数返回 null

模拟 resttemplate 交换总是返回 null