Wiremock:根据请求参数选择正文文件名
我使用wiremock模拟http服务器,并从json文件返回响应(使用Wiremock:根据请求参数选择正文文件名,wiremock,http-mock,Wiremock,Http Mock,我使用wiremock模拟http服务器,并从json文件返回响应(使用withBodyFile方法) 现在我想根据请求参数选择并返回响应json文件。对于下面的示例,我想定义一个存根,以便根据请求参数选择主体文件 myMockServer.stubFor( get(urlEqualTo(myEndPoint+ "?key=key1")) .willReturn(aResponse().withStatus(200) .withHeader("Conte
withBodyFile
方法)
现在我想根据请求参数选择并返回响应json文件。对于下面的示例,我想定义一个存根,以便根据请求参数选择主体文件
myMockServer.stubFor(
get(urlEqualTo(myEndPoint+ "?key=key1"))
.willReturn(aResponse().withStatus(200)
.withHeader("Content-Type", "application/json")
.withBodyFile("response_key1.json")
myMockServer.stubFor(
get(urlEqualTo(myEndPoint+ "?key=key2"))
.willReturn(aResponse().withStatus(200)
.withHeader("Content-Type", "application/json")
.withBodyFile("response_key2.json")
myMockServer.stubFor(
get(urlEqualTo(myEndPoint+ "?key=key3"))
.willReturn(aResponse().withStatus(200)
.withHeader("Content-Type", "application/json")
.withBodyFile("response_key3.json")
你知道这怎么可能吗?我尝试定义transformer,但无法从重写方法中的响应对象获取流源路径,因此无法使用该appraoch。非常感谢。主体文件名目前无法在wiremock中参数化。我有一个类似的要求,我需要根据请求URL返回文件。因此,我实现了一个转换器,如下所示:
public class BodyFileNameResponseTransformer extends ResponseDefinitionTransformer {
public ResponseDefinition transform(Request request, ResponseDefinition rd,
FileSource fileSource, Parameters parameters) {
if (rd.getBodyFileName().startsWith("{{")) {
return new ResponseDefinitionBuilder().**withBodyFile**(request.getUrl().substring(1))
.withStatus(rd.getStatus())
.withHeaders(rd.getHeaders())
.withTransformers(
rd.getTransformers().toArray(new String[rd.getTransformers().size()]))
.build();
}
return rd;
}
public String getName() {
return "BodyFileNameTransformer";
}
}
您可以使用request.queryParameter(key)代替request.getUrl()并形成任何
文件路径。根据需要创建文件路径,并在返回的响应定义中将其设置为bodyFile
别忘了以--extensions:Extension类名开始wiremock
有关详细信息,请参见,这可以通过使用Handlebar提供的内置模板帮助程序来实现
myMockServer.stubFor(
get(urlEqualTo(myEndPoint+ "?key=key3"))
.willReturn(aResponse().withStatus(200)
.withHeader("Content-Type", "application/json")
.withBodyFile("response_{{request.query.key}}.json")
请在上查看可用的各种型号