提问者:小点点

如何用一些可选的JSON参数匹配wiretck POST请求


我需要使用wiremck来测试发送如下数据的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个字段,当前日期和状态从一个请求随机更改到下一个请求,但它们是可以保存任何值的必填字段。

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

提前感谢。


共2个答案

匿名用户

您可以使用JsonPath正则表达式请求正文匹配器,例如,在您的案例中,您应该使用以下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"
}

匿名用户

如果你用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/