我正在尝试验证请求中的特定json字段数量
以具有数字而不是字符串
{
"request": {
"method": "POST",
"urlPath": "/charges",
"bodyPatterns" : [
{"matchesJsonPath" : "$[?(@.amount =~ /^[0-9]*$/i)]"}
]
}
现在请求1和请求2工作正常,请求3失败。但我预计request est2也会失败,因为它是一个字符串,而不是双引号中的数字。
请求1,
{
"amount": 123,
}
请求2,
{
"amount": "123",
}
请求3,
{
"amount": "a123",
}
这可能吗?我在wiretck文档里看到的
Since WireMock’s matching operators all work on strings,
the value selected by the JSONPath expression will be coerced to a string before the match is evaluated.
我找到了一个变通方法。
根据您提供的正则表达式,我看到金额
字段不能有负值。
因此,在matchesJsonPath中,进行虚拟检查,检查该值是否大于或等于零。这将确保值123可以工作,但“123”会抛出错误
你甚至不需要再使用正则表达式了。
{
"request": {
"method": "POST",
"urlPath": "/charges",
"bodyPatterns" : [
{"matchesJsonPath" : "$[?(@.amount >= 0)]"}
]
}