空手道 API 框架 - 如何检查特定字段值在数组下是否重复
Karate API framework - How can I check that a particular field value is not coming as duplicate under an array
使用 karate 框架我如何确保 persons 数组下的 personId 不应该作为重复值出现
如果您看到下面的响应,id:1 记录有重复的 personId,因此在这种情况下我的测试应该失败。此外,persons 数组本质上是动态的,也可能有一些记录包含超过 4 个 personIds。
所以一个通用的方法应该会有所帮助。请帮忙。
{
"total": 10,
"count": 10,
"results": [
{
"id": "1",
"source": {
"authors": {
"persons": [
{
"personId": 11
},
{
"personId": 11
}
]
}
}
},
{
"id": "2",
"source": {
"authors": {
"persons": [
{
"personId": 11
},
{
"personId": 15
}
]
}
}
}
]
}
给你,一种可能的解决方案是使用 JS 函数并使用 Java Set
:
* def isValid =
"""
function(x) {
var personIds = karate.jsonPath(x, '$[*].personId');
var distinct = new java.util.HashSet(personIds);
return personIds.size() == distinct.size();
}
"""
* match each $..persons == '#? isValid(_)'
使用 karate 框架我如何确保 persons 数组下的 personId 不应该作为重复值出现
如果您看到下面的响应,id:1 记录有重复的 personId,因此在这种情况下我的测试应该失败。此外,persons 数组本质上是动态的,也可能有一些记录包含超过 4 个 personIds。
所以一个通用的方法应该会有所帮助。请帮忙。
{
"total": 10,
"count": 10,
"results": [
{
"id": "1",
"source": {
"authors": {
"persons": [
{
"personId": 11
},
{
"personId": 11
}
]
}
}
},
{
"id": "2",
"source": {
"authors": {
"persons": [
{
"personId": 11
},
{
"personId": 15
}
]
}
}
}
]
}
给你,一种可能的解决方案是使用 JS 函数并使用 Java Set
:
* def isValid =
"""
function(x) {
var personIds = karate.jsonPath(x, '$[*].personId');
var distinct = new java.util.HashSet(personIds);
return personIds.size() == distinct.size();
}
"""
* match each $..persons == '#? isValid(_)'