【问题标题】:How to match a wiremock POST request with some optional JSON parameters & any values?如何将wiremock POST请求与一些可选的JSON参数和任何值相匹配?
【发布时间】:2017-10-30 15:52:54
【问题描述】:

我需要使用 wiremock 来测试发送数据的 POST 请求,如下所示:

{
    "name": "known fixed value",
    "dateOfBirth": 5123456789000,
    "email": "known fixed value",
    "currentDate": any numeric value,
    "status": any text value with alphabets, numbers and symbols
}

前 3 个字段 name、dateOfBirth 和 email 是固定的已知值,不会从一个请求更改为下一个请求。

最后 2 个字段 currentDate 和 status 从一个请求到下一个请求会随机变化,但它们是可以包含任何值的必填字段。

我如何设计一个测试这个的映射?

提前致谢。

【问题讨论】:

    标签: wiremock


    【解决方案1】:

    您可以使用JsonPath regex request body matcher,例如在您的情况下您应该使用此 JsonPath:

    $[?(@.name == 'known fixed value' && @.dateOfBirth == 5123456789000 && @.email == 'known fixed value' && @.currentDate =~ /[0-9]*/i && @.status =~ /.*/i)]
    

    将匹配示例请求正文:

    {
    "name": "known fixed value",
    "dateOfBirth": 5123456789000,
    "email": "known fixed value",
    "currentDate": 23123,
    "status": "rfjhg33443"
    }
    

    【讨论】:

      【解决方案2】:

      如果你使用 JSON 存根,你可以写

        "request": {
          "bodyPatterns": [
            {
              "equalToJson": {
                "name": "known fixed value",
                "dateOfBirth": 5123456789000,
                "email": "known fixed value",
                "currentDate": "${json-unit.any-number}",
                "status": "${json-unit.any-string}"
              }
            }
          ]
        }
      

      参考:http://wiremock.org/docs/request-matching/ 中的“占位符”部分

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-24
        • 1970-01-01
        • 2021-06-20
        相关资源
        最近更新 更多