模糊匹配 JSON Part Schema 匹配失败

问题描述 投票:0回答:1

我正在尝试将部分模式与有效载荷相匹配,但面临失败。

Given def payload =
"""
{
  "salesService": [
    {
      "name": "Test User",
      "username": "testuser",
      "email": "[email protected]",
      "address": {
        "doorNo": 32,
        "street": "Kenlab Clise",
        "landmark": true,
        "city": "Bracknell",
        "county": "Berkshire",
        "zipcode": "LI867H"
      }
    }
  ]
}
"""

* def schema =
"""
{
  "salesService": [
    {
      "name": "#string",
      "username": "#string",
      "email": "#present"
    }
  ]
}
"""

Then match payload contains schema

对于上面提到的有效载荷和模式,目前我面临的错误(见下文)是很合乎逻辑的,但是有没有其他方法可以匹配上述有效载荷和部分模式而没有任何错误?

错误:

$.salesService[0] | not equal | actual has 1 more key(s) than expected - {"address":{"doorNo":2,"street":"Kenton Close","landmark":true,"city":"Bracknell","county":"Berkshire","zipcode":"RG129AZ"}} (MAP:MAP)       {"name":"Test User","username":"testuser","email":"[email protected]","address":{"doorNo":2,"street":"Kenton Close","landmark":true,"city":"Bracknell","county":"Berkshire","zipcode":"RG129AZ"}}       {"name":"#string","username":"#string","email":"#present"} 

karate
1个回答
0
投票

试试这个:

* match payload contains deep schema

参考文档:https://github.com/karatelabs/karate#match-contains-deep

注意你有数组等的地方。这也行得通:

* match each payload.salesService contains { "name": "#string", "username": "#string", "email": "#present" }
© www.soinside.com 2019 - 2024. All rights reserved.