Karate 如何验证使用空手道排序的嵌套数组元素
我正在使用空手道框架来验证API响应 我的API回复如下:Karate 如何验证使用空手道排序的嵌套数组元素,karate,Karate,我正在使用空手道框架来验证API响应 我的API回复如下: { "Families": [ { "id1": 1, "names": "abc", "children": [ { "name": "ABC", "age": 2
{
"Families": [
{
"id1": 1,
"names": "abc",
"children": [
{
"name": "ABC",
"age": 2
},
{
"name": "ZXC",
"age": 2
}
]
},
{
"id1": 2,
"name": "buses",
"children": [
{
"name": "ABCD",
"age": 2
},
{
"name": "ZXCV",
"age": 2
},
{
"name": "ZXCVF",
"age": 2
}
]
}
]
}
我的要求是验证子数组中的所有元素是否按名称排序。请阅读我之前链接的文档和答案以了解这一点。如果这看起来太复杂,请使用Java
* def sort =
"""
function(list) {
var result = new java.util.ArrayList();
karate.forEach(list, function(x){ karate.appendTo(result, x) });
java.util.Collections.sort(result);
return result;
}
"""
* def isValid =
"""
function(x){
var names = karate.jsonPath(x, '$.children[*].name');
return karate.match(names, sort(names)).pass;
}
"""
* match each response.Families == '#? isValid(_)'
嗨,彼得,谢谢你的回复。我将json响应转换为pojo,并进行java验证。这对我有用。谢谢。您好,我刚刚尝试了这个,得到了以下响应:``org.opentest4j.AssertionFailedError:employeeQueries.feature:59-'match each'失败,不是json数组:+[type:json,value:com.jayway.jsonpath.internal。JsonContext@49962179],路径:$.data``@b您执行此过程所需的时间,然后: