我正在使用空手道测试用户搜索端点。它收到一个简单的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'
}]
我想请您帮忙,为每种结果找到断言以下条件的最佳方法:
我认为可以用一个简单的match each contains any
来做,但是它不起作用,因为其中一个参数不是数组(它是一个简单的字符串)。另一个断言也发生类似的情况。
我发现的唯一解决方案是创建一个通用的javascript函数,该函数接收两个参数,一个是所有状态的数组(来自响应),另一个是带有状态搜索过滤器的数组。 然后,我可以在*断言步骤中使用此功能
我肯定有一个更简单的解决方案,但是我不知道该怎么做。有人可以帮我吗? 非常感谢。
答案 0 :(得分:1)
您在这里:
* 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!对于这些情况确实有帮助。
我将日期验证留给您做家庭作业,您可能需要执行一些字符串到日期的转换,请参考以下答案:https://stackoverflow.com/a/52892797/143475