【问题标题】:Wiremock bodyFileName templatingWiremock bodyFileName 模板
【发布时间】:2017-10-13 13:32:36
【问题描述】:

我正在使用 Wiremock 存根移动客户端发出的一些 API 调用。

努力从请求中获取模板文件名。

任何人都可以确认这是否应该与 Wiremock 独立 pls 一起使用?

"response": { "status": 200, "bodyFileName": "Account-{{jsonPath request.body '$.user.identity'}}.json”}

我可以正常返回静态文件,但似乎 bodyFileName 不喜欢模板化。

例子:

我使用以下 Json 配置 wm:

{
    "request": {
        "method" : "GET",
        "url": "/users/D8428899330"
    },
    "response": {
        "status": 200,
        "bodyFileName": "user-{{request.path.[1]}}.json"
    }
}

然后当我尝试 url,http://localhost:9696/users/D8428899330 我得到以下错误,

HTTP 错误:500 访问 /users/D8428899330 时出现问题。原因:

java.lang.RuntimeException: java.io.FileNotFoundException: /Users/iainframe/Documents/__files/user-{{request.path.[1]}}.json(否 这样的文件或目录)

应该指出文件user-D8428899330.json resides 位于正确的位置,因为我已经对其进行了硬编码,并且它可以正常返回。启动WireMock的命令是:

 java -jar ~/Documents/wm.jar --port 9696 --global-response-templating --verbose --root-dir /Users/iainframe/Documents/ 

【问题讨论】:

  • 您在启动 WireMock 进程时是否启用了模板?
  • 是的,我运行了这个命令行:java -jar ~/Documents/wm.jar --port 9696 --global-response-templating --verbose --root-dir /Users/iainframe/文件/
  • 你能更详细地描述这个问题吗?您是否看到错误消息?
  • 错误消息是问题中突出显示的 HTTP 500 错误。这在wiremock-standalone-2.14.0 版本中仍然存在。
  • 我遇到了同样的问题,发现 {{request.path.[1]}} 不会映射到 bodyFileName 中。这意味着您必须创建自定义 Transformer 才能做到这一点。如果您创建一个名为“user-{{request.path.[1]}}.json”的文件,这将起作用,但您的请求中没有动态部分:(

标签: wiremock


【解决方案1】:

以下响应定义适用于我使用 response template 转换器的 Wiremock 2.25.1。

  "response": {
     "transformers": ["response-template"],
     "status": 200,
     "bodyFileName": "user-{{jsonPath request.body '$.userid'}}.json" }

这也很好用:

"response": {
     "transformers": ["response-template"],
     "status": 200,
     "bodyFileName": "user-{{request.path.[3]}}.json" }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多