匹配一个包含任意子串的列表
Match a list contains any substring
{ list: [ {field1:"New York", field2:"San Francisco"}, {field1:"Miami", field2:"Chicago"} ] }
And match list contains any substring 'Francisco'
是否有任何可能的解决方案,以便验证列表包含一个在空手道中具有部分字符串验证的字段?
多种选择。下面是一对。 JsonPath 是你的朋友。请参阅文档以了解其工作原理:
* def response = { list: [ {field1:"New York", field2:"San Francisco"}, {field1:"Miami", field2:"Chicago"} ] }
* def values = $response.list[*].*
* match values contains "#? _.includes('Francisco')"
* match values contains "#regex .*Francisco.*"
请注意,以上内容已针对空手道 1.0.1 进行测试,最后一行可能无法正常工作,因为存在以下未决问题:
这是专门针对 List 实现的。
* def condition = function(x){return (x.field2.contains('Francisco'))}
* def filteredResult = karate.filter(list, condition)
* match filteredResult = '#notnull'
condition 函数验证一个列表是否有一个对象,并且这个对象有一个特定的字段要查看'field2'。然后验证此字段是否包含关键字“Francisco”。空手道具有 returns 过滤对象的过滤功能。最后一步是验证结果是否不为空。
{ list: [ {field1:"New York", field2:"San Francisco"}, {field1:"Miami", field2:"Chicago"} ] }
And match list contains any substring 'Francisco'
是否有任何可能的解决方案,以便验证列表包含一个在空手道中具有部分字符串验证的字段?
多种选择。下面是一对。 JsonPath 是你的朋友。请参阅文档以了解其工作原理:
* def response = { list: [ {field1:"New York", field2:"San Francisco"}, {field1:"Miami", field2:"Chicago"} ] }
* def values = $response.list[*].*
* match values contains "#? _.includes('Francisco')"
* match values contains "#regex .*Francisco.*"
请注意,以上内容已针对空手道 1.0.1 进行测试,最后一行可能无法正常工作,因为存在以下未决问题:
这是专门针对 List 实现的。
* def condition = function(x){return (x.field2.contains('Francisco'))}
* def filteredResult = karate.filter(list, condition)
* match filteredResult = '#notnull'
condition 函数验证一个列表是否有一个对象,并且这个对象有一个特定的字段要查看'field2'。然后验证此字段是否包含关键字“Francisco”。空手道具有 returns 过滤对象的过滤功能。最后一步是验证结果是否不为空。