如何 return 响应正文中的 WireMock 服务器端口

How to return WireMock server port in a response body

我有请求将 WireMock URL 返回到另一个 WireMock 存根。

你有一个问题 CI 工具端口 8080 被占用所以我必须使用随机端口。 @AutoConfigureWireMock(port = 0) 十个端口是随机的我无法正确模拟端口。

我的映射 JSON 有错误:

{
  "priority": 1,
  "request": {
    "method": "GET",
    "url": "/api/public/v3/tasks/taskid123"
  },
  "response": {
    "status": 200,
    "jsonBody": {
      "info": {
        "result_callbacks": [{
          "url": "http://localhost:${wiremock.server.port}/download/zip/result"
        }]
      }
    },
    "headers": {
      "Content-Type": "application/json; charset=utf-8"
    }
  }
}

如何在映射中设置服务器端口JSON?

你不能(还)直接抓取服务器端口,但是你可以获取入站端口,通常效果是一样的:

{{{request.requestLine.port}}}

要解决此问题,@Tom 的建议是:

{
  "priority": 1,
  "request": {
    "method": "GET",
    "url": "/api/public/v3/tasks/taskid123"
  },
  "response": {
    "status": 200,
    "jsonBody": {
      "info": {
        "result_callbacks": [{
          "url": "http://localhost:{{request.requestLine.port}}/download/zip/result"
        }]
      }
    },
    "headers": {
      "Content-Type": "application/json; charset=utf-8"
    },
    "transformers": [
      "response-template"
    ]
  }
}