Karate 验证数组是否包含字符串的最简单方法是什么
我正在使用空手道测试用户搜索端点。它接收一个简单的json对象:Karate 验证数组是否包含字符串的最简单方法是什么,karate,Karate,我正在使用空手道测试用户搜索端点。它接收一个简单的json对象: { "status" : ['ACTIVE', 'INACTIVE'], "activeDate" : '2017-11-27T17:51:13Z' } 结果是在“activeDate”之后创建的状态为ACTIVE或INACTIVE的用户列表: [ { "name" : 'mike', "status" : 'ACTIVE', "date" : '2018-06-08T17:45:09Z' },{ "name" : 'a
{
"status" : ['ACTIVE', 'INACTIVE'],
"activeDate" : '2017-11-27T17:51:13Z'
}
结果是在“activeDate”之后创建的状态为ACTIVE或INACTIVE的用户列表:
[ {
"name" : 'mike',
"status" : 'ACTIVE',
"date" : '2018-06-08T17:45:09Z'
},{
"name" : 'alice',
"status" : 'INACTIVE',
"date" : '2018-02-05T07:32:14Z'
}]
我想请您帮助找到最好的方法,为每个结果声明以下条件:
- “status”字符串结果是我筛选的状态之一
- “日期”在我筛选的日期之后
匹配来完成,每个匹配都包含任何,但它不起作用,因为其中一个参数不是数组(它是一个简单的字符串)。另一个断言也会发生类似的情况
我找到的唯一解决方案是创建一个通用javascript函数,它接收两个参数,一个是所有状态的数组(来自响应),另一个是带有状态搜索过滤器的数组。
然后我可以在*断言步骤中使用这些函数
我确信有一个更简单的解决方案,但我不知道怎么做。有人能帮我吗?
非常感谢。给你:
* def payload = { "status" : ['ACTIVE', 'INACTIVE'], "activeDate" : '2017-11-27T17:51:13Z' }
* def response =
"""
[
{
"name":"mike",
"status":"ACTIVE",
"date":"2017-11-27T17:51:13Z"
},
{
"name":"alice",
"status":"INACTIVE",
"date":"2017-11-27T17:51:13Z"
}
]
"""
* match response[*].status contains only payload.status
* match each response..date == payload.activeDate
提示:熟悉JsonPath!这对这些情况很有帮助
我将日期验证作为家庭作业留给您,您可能需要进行一些字符串到日期的转换,请参考以下答案: