Karate 验证数组是否包含字符串的最简单方法是什么

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

我正在使用空手道测试用户搜索端点。它接收一个简单的json对象:

{
  "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!这对这些情况很有帮助

我将日期验证作为家庭作业留给您,您可能需要进行一些字符串到日期的转换,请参考以下答案: