Java Spring REST文档-更新REST测试生成的响应片段中的URI
当将REST-Assured与REST-Docs结合使用时,我遇到了一个问题,即请求的端口在哪里更新,但是响应中的所有HATEOAS链接都指向测试运行的任何地址 从REST文档中,我了解了如何使用预处理器更新请求:Java Spring REST文档-更新REST测试生成的响应片段中的URI,java,spring,rest-assured,spring-restdocs,Java,Spring,Rest Assured,Spring Restdocs,当将REST-Assured与REST-Docs结合使用时,我遇到了一个问题,即请求的端口在哪里更新,但是响应中的所有HATEOAS链接都指向测试运行的任何地址 从REST文档中,我了解了如何使用预处理器更新请求: .addFilter(document("{class-name}/{method-name}/{step}", preprocessRequest( modifyUris().scheme("http") .host("localhost")
.addFilter(document("{class-name}/{method-name}/{step}", preprocessRequest(
modifyUris().scheme("http")
.host("localhost")
.port(9999),
removeHeaders("Accept"))))
但无法找到是否支持修改响应中的端口。例如,当我想将配置中的端口设置为9999时:
curl request.adoc:(这很好:localhost:9999)
响应主体。adoc:(我想将localhost:51123更改为localhost:9999)
是否有任何可接受的方式使用REST文档或REST Assured来修改响应的内容?我想我可以创建一个@AfterClass方法来解析和更新这些资源,但我希望有更干净的东西
[跟进] 我接受了下面Andy W.的回答,但想为任何有同样问题的人提供更多信息- 我的问题是,我尝试两次添加文档过滤器:
.addFilters(Arrays.asList(
document("{class-name}/{method-name}/{step}",
preprocessRequest(modifyUris().scheme("http")
.host("localhost")
.port(9999))),
document("{class-name}/{method-name}/{step}",
preprocessResponse(modifyUris().scheme("http")
.host("localhost")
.port(9999))))
vs.使用参数调用document方法:
RestDocumentationFilter文档(字符串标识符,OperationRequestPreprocessor请求预处理器,OperationResponseProcessor ResponseProcessor,代码段…代码段)
一旦我做出了改变,一切都按预期进行了。干杯 是的,有。发件人:
restassered上的modifyUris
预处理器可用于修改请求或响应中的任何uri。当使用REST-Assured时,这允许您在测试服务的本地实例时自定义文档中出现的uri
感谢Andy的澄清,感谢Spring为您提供的所有精彩工作和支持!接受了你的回答,并在我的问题中添加了更多细节。
{
"_links" : {
"requests" : {
"href" : "localhost:51123/request/data/requests{?page,size,sort,projection}",
"templated" : true
},
"users" : {
"href" : "localhost:51123/request/data/users{?projection}",
"templated" : true
},
"profile" : {
"href" : "localhost:51123/request/data/profile"
}
}
}
.addFilters(Arrays.asList(
document("{class-name}/{method-name}/{step}",
preprocessRequest(modifyUris().scheme("http")
.host("localhost")
.port(9999))),
document("{class-name}/{method-name}/{step}",
preprocessResponse(modifyUris().scheme("http")
.host("localhost")
.port(9999))))