what is the easiest way to validate that an array contains a string
我正在使用空手道测试用户搜索端点。它接收一个简单的 json 对象:
1 2 3 4 | { "status" : ['ACTIVE', 'INACTIVE'], "activeDate" : '2017-11-27T17:51:13Z' } |
结果是在"activeDate"之后创建的用户列表,状态为 ACTIVE 或 INACTIVE:
1 2 3 4 5 6 7 8 9 | [ { "name" : 'mike', "status" : 'ACTIVE', "date" : '2018-06-08T17:45:09Z' },{ "name" : 'alice', "status" : 'INACTIVE', "date" : '2018-02-05T07:32:14Z' }] |
我想请求您的帮助,以找到为每个结果断言以下条件的最佳方法:
- "状态"字符串结果是我过滤的状态之一。
- "日期"在我过滤的日期之后。
我认为可以用一个简单的
我发现的唯一解决方案是创建一个通用 javascript 函数,它接收两个参数、一个包含所有状态的数组(来自响应)和另一个带有状态搜索过滤器的数组。
然后我可以在 * assert step
中使用这个函数
我确信有一个更简单的解决方案可以做到这一点,但我不知道该怎么做。有人可以帮我吗?
非常感谢。
给你:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | * 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