我正在尝试将部分模式与有效载荷相匹配,但面临失败。
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"}
试试这个:
* match payload contains deep schema
参考文档:https://github.com/karatelabs/karate#match-contains-deep
注意你有数组等的地方。这也行得通:
* match each payload.salesService contains { "name": "#string", "username": "#string", "email": "#present" }