如何测试在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来检查传递的合同
请帮助。
答案 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());