Karate框架中Retry Until机制的模糊匹配失效问题
Karate中retry until判断字段不存在的正确写法
问题原因
当响应中不存在external_list字段时,直接使用response.external_list == '#notpresent'无法触发重试终止,因为Karate中访问不存在的字段会返回null,而#notpresent是Karate内置的特殊标识,null与该标识不相等,导致条件永远不成立。
解决方案
有两种可行的写法可以正确判断字段不存在:
方法1:使用karate.get()方法
Given url Url And path 'abc' And header Accept = 'application/json' And retry until karate.get('response.external_list') == '#notpresent'
karate.get()会明确处理字段不存在的情况,返回#notpresent标识,此时条件可以正确匹配。
方法2:使用hasOwnProperty()判断属性存在性
Given url Url And path 'abc' And header Accept = 'application/json' And retry until !response.hasOwnProperty('external_list')
直接通过JS原生方法判断响应对象是否包含目标属性,取反后即可表示字段不存在。
内容的提问来源于stack exchange,提问作者Deepak Rai
相关产品推荐
相关产品推荐

