【问题标题】:Dynamic wiremock to capture path parameter and return in response动态wiremock捕获路径参数并返回响应
【发布时间】:2020-12-17 05:01:26
【问题描述】:

我正在尝试使用 WireMock 创建动态模拟。我有一种情况,如果我指定 URL,例如

http://localhost:8989/api/account/121

那么我应该会收到这样的回复:

   "cycleSpecification": {
       "id": "121"
        }
  }

简而言之,路径参数在响应正文中返回,但我不确定我应该如何捕获 121 并使用wiremock 在响应中返回它。

对于这种请求

/myManagement/v1/source?filters=myParty.id==539&&myParty.role==individual

/myManagement/v1/source?filters=myParty.id%3D%3D539%26myParty.role%3D%individual

我可以使用什么,所以响应将过滤掉 id 和角色并放入响应中。

我正在使用独立的wiremock jar 2.27.2 来创建wiremock-server。

【问题讨论】:

    标签: mocking wiremock wiremock-standalone


    【解决方案1】:

    您可以通过使用响应模板来实现这一点。您需要将--global-response-templating 添加到您启动独立服务器的方式中,然后您可以使用响应模板。

    我想你会想要这样的东西:

    {
      "request" : {
        "urlPathPattern" : "/api/account/.*",
        "method" : "GET"
      },
      "response" : {
        "status" : 200,
        "body" : "{ \"cycleSpecification\": { \"id\": \"{{request.path.[2]}}\" } }"
      }
    }
    

    Check out the documentation on the request model for more information

    对于您的第二个问题,如果查询参数是作为单独的查询参数发送的,您就可以在请求模型中引用它们。

    {
      "request" : {
        "urlPathPattern" : "/api/account/.*",
        "method" : "GET",
        "queryParameters": {
            "myParty.id" : {
                "matches": ".*"
            },
            "myParty.role": {
                "matches": ".*"
            }
        }
      },
      "response" : {
        "status" : 200,
        "body" : "{ \"cycleSpecification\": { \"id\": \"{{request.query.party.id}}\" } }"
      }
    }
    

    由于您的查询参数看起来不像是单独发送的,很遗憾,我认为您需要create a transformer 来修改您的回复。

    【讨论】:

    • 感谢它的工作。你能帮我解决我在问题中添加的另一种请求吗?在 url 中带有过滤器的那个。我该如何使用它。我想在过滤器中存在的 json 响应中添加这两个参数。
    • 我已经添加了对您第二个问题的回复。不幸的是,您可能需要创建一个自定义转换器来实现您的目标。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 2013-01-19
    相关资源
    最近更新 更多