spring-mvc - restTemplate.postforEntity(url, request,ResponseObj.class) 的测试请求正文
问题描述
如何测试在 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)它更像是我将正确的对象及其属性传递给 post 调用。
2)我们有什么方法可以访问 JUNIT 中的请求 JSON 以检查所传递内容的合同
请帮忙。
解决方案
在您的测试中模拟 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());
推荐阅读
- python - 多列的条件聚合计算
- python - 将调整大小的图像迭代保存到子目录
- c# - C# Web API jsonconvert.deserializeobject 问题
- python - CSV - 合并 2 个具有随机序列标题的文件
- python - Python中可变类的可散列子类
- windows - 使用 Windows DeviceEnumeration 示例进行 BLE 配对的任何尝试均失败
- css - Bootstrap 4匹配不同块中的网格列大小
- erlang - 合并 2 个列表,一次合并一个元素?
- hibernate - 休眠一级缓存如何与 Spring Data JPA 一起工作?
- python - 检查每个分区是否存在项目