我需要检查我的测试,请求中的日期正好是今天。我该怎么做?尝试了与Doc不同的方法,但没有得到预期的结果。帮助请一个可怜的初级qa:(
我尝试了什么方法(我的同事建议我这个,考虑到文件,它看起来很好(
{
"request": {
"urlPath": "/test/calc",
"method": "POST",
"headers": {
"Accept": {
"equalTo": "application/json"
},
"Content-Type": {
"equalTo": "application/json"
}
},
"bodyPatterns": [
{
"matchesJsonPath": {
"expression": "$.addDate",
"and": [
{
"before": "now + 1 days"
},
{
"after": "now - 1 days"
}
]
},
"equalToJson": {
"RequestBody": {
"order": {
"positionList": [
{
"id": 1,
"addDate": "${json-unit.any-string}",
"qty": 1
}
]
}
}
},
"ignoreArrayOrder": false
}
]
},
"response": {
"transformers": [
"response-template"
],
"status": 200,
"bodyFileName": "v1/test-service-mock-response.json",
"headers": {
"Content-Type": "application/json"
}
}
}
我需要检查参数";addDate";在请求中。日期格式为"=";addDate":"2022-03-31";。
*也尝试了这种变体";addDate":"{{now format='yyyy-MM-dd'}}";。效果不太好Wiremock不符合这样的请求。
当我想做同样的事情时,我遇到了这个问题:根据请求正文中的动态日期值匹配请求。
你的问题确实给我指明了正确的方向,我通过组合多个身体模式来实现它。在您的情况下,以下内容应该有效:
"bodyPatterns": [ {
"matchesJsonPath": {
"expression": "$.RequestBody.order.positionList[0].addDate",
"and": [
{
"matches": "\d{4}-\d{2}-\d{2}"
},
{
"equalToDateTime": "now",
"truncateExpected": "first hour of day"
}
]
}
}, {
"equalToJson": {
"RequestBody": {
"order": {
"positionList": [
{
"id": 1,
"addDate": "${json-unit.any-string}",
"qty": 1
}
]
}
}
},
"ignoreArrayOrder": false
} ],
第一个bodyPattern
使用matchesJsonPath
中的expression
来查找addDate
字段(为了简单起见,只检查数组的第一个元素,因为这对于您的用例来说已经足够了(,并检查它的格式是否正确,是否等于当前日期。
第二个bodyPattern
基本上是您已经拥有的,它使用equalToJson
来匹配请求体的其余部分,并且只检查addDate
是否是字符串。