当前位置: 首页 > 知识库问答 >
问题:

WireMock CustomTransformer(车把助手不在bodyFile中工作)

韩峰
2023-03-14

我有问题与车把助手在Wiremck。

我注册了一个这样的定制变压器:

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"
}

不工作场景:问题是当我尝试在我的自定义转换器中使用该文件进行响应时:

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";
    }
  }
}

我想要与Handlebar助手相同的东西,就像在工作场景中一样。但是我实际上得到了与文件内容相同的响应。我得到的不是来自请求路径的值,而是字符串“{{request.request.path.[3]}}”。

预期反应:

{
  "key": "12345"
}

我得到的回应:

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

我怎样才能做到这一点呢?

共有1个答案

姚向晨
2023-03-14

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

 类似资料:
  • 我的axios代码: 用内容类型':'application/x-www-form-urlencoded发布请求;Charset=UTF-8很有用 但是,当使用PUT时,请求头没有内容类型':'application/x-www-form-urlencoded;CHARSET=UTF-8使put请求成为一个选项

  • 问题内容: 我正在使用用于服务器端模板的快速把手来构建应用程序。在客户端,我想使用vue.js。但是,它们都具有相同的双括号符号。现在,我的vue.js变量没有显示,因为我的车把模板覆盖了它。例如: home.html: home.js: 但是,如果我在服务器端控制器中定义: 该消息将显示。 因此,总而言之,有没有一种方法可以将vue.js用于客户端模板,同时仍将express-handlebar

  • 我想在IntelliJ IDE中从头开始创建一个Spring Boot项目。还有一种方法可以使用Spring Initializer创建Spring启动项目,然后下载zip并导入IDE。 因为每次这样做都有点耗时,所以我在网上检查了一下,看看是否有一个插件可以自动将Spring初始化器加载到IntelliJ上,发现有一个插件名为Spring助手。 但是这个插件在IntelliJ插件市场中不可见。所

  • 对齐 我们使用几个简单的类来是你的页面进行对齐。 垂直对齐 通过增加 valign-wrapper 类来使包裹的内容垂直居中。 <div class="valign-wrapper"> <h5 class="valign">这个应该垂直居中对齐</h5> </div> 文本对齐 这些类用于水平对齐内容。我们有 .left-align, .right-align 和 .center-align <d

  • 问题内容: 我正在做SharedPreferences帮助器类,以使我的代码看起来不错。 问题是我应该使这些方法静态化并在每个方法中初始化SharedPreferences还是更好地使其不处于静态状态并从其他类中调用一次SharedPreferencesHelper类?谢谢 问题答案: 我不会引用上下文。我宁愿将和及其作为您的帮助器类的静态成员。这样,您无需在每次需要读取/写入时都实例化。进一步的

  • 注意: 这部分正在开发中。 Yii 提供许多类来简化常见编码,如对字条串或数组的操作, HTML 代码生成,等等。这些助手类被编写在命名空间 yii\helpers 下,并且 全是静态类 (就是说它们只包含静态属性和静态方法,而且不能实例化)。 可以通过调用其中一个静态方法来使用助手类,如下: use yii\helpers\Html; echo Html::encode('Test > tes