【问题标题】:Wiremock Capture path param and return in the response bodyWiremock 捕获路径参数并在响应正文中返回
【发布时间】:2018-11-18 03:46:29
【问题描述】:

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

http://localhost:8089/api/account/abc@abc.com

那么我应该收到如下响应:

{ 
  "account" : "abc@abc.com" 
}

简而言之,路径参数在响应正文中返回。我可以通过将urlPathPattern 设置为/api/account/([a-z]*) 来使请求URL 通用,但是我不确定应该如何捕获abc@abc.com 并使用正则表达式在响应中返回它。

【问题讨论】:

    标签: wiremock


    【解决方案1】:

    在 WireMock 中,正则表达式可用于识别Request Matching 中的电子邮件格式。出于本示例的目的,我使用了一个非常粗略的示例。您的生产实施可能需要更稳健的方法。

    这个请求:

    http://localhost:8181/api/account/someone@somewhere.net
    

    符合这条规则:

    {
        "request": {
            "method": "GET",
            "urlPathPattern": "/api/account/([a-z]*@[a-z]*.[a-z]*)"
        },
        "response": {
            "status": 200,
            "jsonBody": {
                "account": "{{request.path.[2]}}"
            },
            "transformers": ["response-template"],
            "headers": {
                "Content-Type": "application/json"
            }
        }
    }
    

    并返回此响应:

    {
      "account": "someone@somewhere.net"
    }
    

    它利用了 WireMock 中的 Response Template 处理功能。 Request Model variables [{{request.path.[2]}}] 可用于从请求中获取部分。

    【讨论】:

    • 非常感谢@A。 Kootstra 回答我的问题。你自己概述的解决方案对我有用,我现在正在构建更复杂的测试。太棒了,干杯队友!!!
    • 不错的答案!这个 sn-p 也可以节省一些搜索时间:WireMockServer wireMockServer = new WireMockServer(options().<other options>.extensions(new ResponseTemplateTransformer(true)))
    【解决方案2】:

    使用WireMock.Net - Response-Templating也可以做到这一点

    规则如下:

    {
        "Request": {
            "Path": {
                "Matchers": [
                    {
                        "Name": "RegexMatcher",
                        "Pattern": "^/api/account/([a-z]*@[a-z]*.[a-z]*)$"
                    }
                ]
            },
            "Methods": [
                "get"
            ]
        },
        "Response": {
            "StatusCode": 200,
            "BodyAsJson": {
                "account": "{{request.PathSegments.[2]}}"
            },
            "UseTransformer": true,
            "Headers": {
                "Content-Type": "application/json"
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-28
      • 1970-01-01
      • 2021-04-04
      • 2023-03-28
      相关资源
      最近更新 更多