Wiremock独立版,具有动态响应

时间:2018-10-17 18:00:45

标签: spring-boot wiremock

我有一个Wiremock服务器的独立实例。映射作为json文件存储在mappings文件夹下。我有一个POST请求,需要在响应中返回动态ID(整数)。有没有办法在json文件中配置它?

3 个答案:

答案 0 :(得分:3)

这似乎是OpenTable's Wiremock Body Transformer的完美用例。

它可以像这样轻松地与独立服务器集成:

java -cp "wiremock-body-transformer-1.1.6.jar:wiremock-2.3.1-standalone.jar" com.github.tomakehurst.wiremock.standalone.WireMockServerRunner --verbose --extensions com.opentable.extension.BodyTransformer

并允许您轻松指定要在响应中匹配的动态变量。

这里是一个无需在请求中指定任何内容即可获取随机整数的示例,但是,如果您需要将请求中的特定变量与响应进行匹配,那么使用此扩展名也可以做到这一点,许多示例可以在自述文件中找到。

{
    "request": {
        "method": "POST",
        "urlPath": "/transform",
    },
    "response": {
        "status": 200,
        "body": "{\"randomInteger\": \"$(!RandomInteger)\"}",
        "headers": {
            "Content-Type": "application/json"
        },
        "transformers": ["body-transformer"]
    }
}

答案 1 :(得分:1)

在WireMock中,有许多用于生成random strings的响应模板帮助器函数。在下面的示例中,我将使用一个示例来生成UUID,但是还存在其他几个选项。

映射文件: dynamic_id.json

{
  "request": {
    "method": "POST",
    "url": "/dynamic_id"
  },
  "response": {
    "headers": {
      "Content-Type": "application/json"
    },
    "status": 200,
    "body": "{{randomValue type='UUID'}}",
    "transformers": ["response-template"]

  }
}

使用空的POST http://wiremock/dynamic_id将返回类似于c2e6bf32-c9a3-45c0-b988-94fad04cc7a2的ID。

启动WireMock:

java -jar wiremock-standalone-2.18.0.jar --port 8181 --verbose --local-response-templating

答案 2 :(得分:0)

要使上述示例正常工作,我必须使用--global-response-templating运行独立jar。然后,例如,我看到{{now}}可以正常工作。不确定文档是否指定了这一点-我尝试了总是有用的--help。