将REST Assured与REST Docs结合使用时,我的问题是请求更新了端口,但响应中的所有HATEOAS链接都指向测试运行的任何地址。
从REST Docs文档中,我了解了如何使用预处理器更新请求:
.addFilter(document("{class-name}/{method-name}/{step}", preprocessRequest(
modifyUris().scheme("http")
.host("localhost")
.port(9999),
removeHeaders("Accept"))))
但是无法找到是否有支持修改端口int的响应。例如,当我想将配置中的端口设置为9999时:
curl-request.adoc: (这很好:localhost:9999)
$ curl 'localhost:9999/request/data' -i
response-body.adoc: (我想将localhost:51123更改为localhost:9999)
{
"_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"
}
}
}
是否有任何可接受的方式使用REST Docs或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 requestPreprocessor , OperationResponsePreprocessor responsePreprocessor ,Snippet ... snippets)
一旦我做出改变,一切都按预期工作。 干杯!
答案 0 :(得分:1)
是的,有。来自the documentation:
modifyUris
上的
RestAssuredPreprocessors
可用于修改请求或响应中的任何URI。使用REST Assured时,这允许您在测试本地服务实例时自定义文档中显示的URI。