微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WireMock CustomTransformer车把助手在 bodyFile 中不起作用

如何解决WireMock CustomTransformer车把助手在 bodyFile 中不起作用

我在使用 wiremock 中的 Handlebars 助手时遇到问题。

注册一个这样的自定义转换器:

final wiremockServer wiremockServer = new wiremockServer(wiremockConfig().port(PORT).extensions(new ResponseTemplateTransformer(true),new CustomTransformers.FileNameTransformer()));

工作场景: 当我像这样创建存根时它工作得很好:

stubFor(get("/my/path/with/12345/id")
                .willReturn(aResponse()
                        .withStatus(200)
                        .withHeader("Content-Type","text/json")
                        .withTransformers("response-filename-handler")
                        .withBodyFile("myJsonFile.json")
                ));

myJsonFile.json 中的内容

{
  "key": "{{request.query.path.[3]}}"
}

在这种情况下,我得到了预期的响应:

{
  "key": "12345"
}

不工作场景: 问题是当我尝试在我的 CustomTransformer 中使用该文件进行响应时:

public class CustomTransformers {
  public static class FileNameTransformer extends ResponseDeFinitionTransformer {
    @Override
    public ResponseDeFinition transform(Request request,ResponseDeFinition responseDeFinition,FileSource fileSource,Parameters parameters) {
      return ResponseDeFinitionBuilder.like(responseDeFinition).but().withBodyFile("myJsonFile.json").build();
    }

    @Override
    public String getName() {
        return "response-filename-handler";
    }
  }
}

我希望 Handlebars 助手与 WORKING SCENARIO 一样。但我实际上得到了与文件内容相同的响应。我得到的不是来自请求路径的值,而是字符串“{{request.request.path.[3]}}”。

预期响应:

{
  "key": "12345"
}

我得到的回应:

{
  "key": "{{request.query.path.[3]}}"
}

关于如何实现这一目标的任何想法?

解决方法

您是对的 - 当您以这种方式提供响应 JSON 文件时,不会评估把手。如果您想在响应转换器中使用该文件,您需要将 key 值替换为转换器的一部分,然后将其作为响应提供。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。