Java 解析wireMock中的动态路径
大家好,我是Wiremock框架的新成员。我已经有了一个测试环境,但是我需要为我们的集成测试解决一个动态路径,比如 /test/dynamic/{dynamicpath}/help 其中,动态路径将是一个变量,我希望解析它,然后使用json文件的子集(例如 { “你好”, 动态“世界” } 目前我有:Java 解析wireMock中的动态路径,java,spring,wiremock,Java,Spring,Wiremock,大家好,我是Wiremock框架的新成员。我已经有了一个测试环境,但是我需要为我们的集成测试解决一个动态路径,比如 /test/dynamic/{dynamicpath}/help 其中,动态路径将是一个变量,我希望解析它,然后使用json文件的子集(例如 { “你好”, 动态“世界” } 目前我有: stubFor(get(urlPathMatching("/test/dynamic/{dynamicpath}/help")) .withHeader("acce
stubFor(get(urlPathMatching("/test/dynamic/{dynamicpath}/help"))
.withHeader("accept", equalTo("application/json"))
.willReturn(aResponse().withBody(readFile(RESOURCES + "test.json", Charset.defaultCharset()))));
它将返回一个完整的json文件,其中包含完整的数据子集,但不包含与动态uri相关的各个组件。我的问题是,有没有办法解析动态url并从json返回动态数据
我希望我说得够具体,我会根据需要进行更新。完全可能。你想要的是一个 您使用path regex matcher做了正确的事情,它将识别一个正匹配-这就是它参与的结束,其余的取决于响应转换器 您有两个选项用于解析带有响应转换器的
dynamicPath
部分,您可以a)将其作为参数提供给转换器,或者b)让响应转换器评估路径的请求URL。下面是一个让响应转换器完成所有工作的示例
public static class DynamicTransformer extends ResponseDefinitionTransformer {
@Override
public ResponseDefinition transform(Request request, ResponseDefinition responseDefinition, FileSource files, Parameters parameters) {
String path = request.getUrl();
String dynamicPath = ...; // Pull out the dynamic part
String transformedJson = ...; // Render the JSON string applicable
return new ResponseDefinitionBuilder()
.withHeader("Content-Type", "application/json")
.withStatus(200)
.withBody(transformedJson)
.build();
}
@Override
public String name() {
return "dynamic-transformer";
}
那么你的测试看起来像
WireMockServer wireMock = new WireMockServer(wireMockConfig()
.extensions(new DynamicTransformer()));
stubFor(get(urlPathMatching("/test/dynamic/[^/]+/help"))
.withHeader("accept", equalTo("application/json"))
.willReturn(aResponse()
.withTransformers("dynamic-transformer")));