restTemplate.postforEntity(URL,request,ResponseObj.class)的测试请求主体

时间:2018-10-25 06:58:58

标签: spring-mvc junit mockmvc spring-mvc-test springmockito

如何测试在restTemplate.postForEntity中传递的请求json。

让我们说说以下方法:

    void doAsyncCall(Int id){
        MyObject obj= mydao.getObject(id);
        ///do something 
        MyRequstObject myrequet = constructRequestfromObject(obj);// set some thing in request object form obj

        Myresponse resp = restTemplate.postForEntity(url,new 
        HttpEntitiy(myrequet), respone.class)

        if(resp.status==ok){
            Logger.log("done");
        }
   }

在我的测试用例中:-

我想测试在请求中传递给postForEntity方法的内容。

1)它更像是我将正确的Object及其属性传递给帖子调用。

2)我们是否可以通过任何方式在JUNIT中访问请求JSON来检查传递的合同

请帮助。

1 个答案:

答案 0 :(得分:0)

在测试中模拟restTemplate并调用doAsyncCall,然后验证是否使用正确的参数调用了restTemplate.postForEntity。要声明要传递给该方法的对象,可以使用ArgumentCaptor.capture()。例如:

    ArgumentCaptor<HttpEntity> captor = ArgumentCaptor.forClass(HttpEntity.class);

    verify(restTemplate).postForEntity(eq("some url"), captor.capture(), response.class);
    HttpEntity value = captor.getValue();
    assertEquals("content here", value.getContent());