Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Karate 在空手道中使用逻辑AND/OR和模糊匹配标记_Karate - Fatal编程技术网

Karate 在空手道中使用逻辑AND/OR和模糊匹配标记

Karate 在空手道中使用逻辑AND/OR和模糊匹配标记,karate,Karate,在空手道中,是否可以用模糊匹配标记构建逻辑和/或结构?比如: * def response = {a:1, {b:null, c:2}}, {a:2, {b:[x,y,z], c:3} * match each response == {a:'#number', {b:('#present' && ('#null' || '#array'), c:'#number'} 基本上,检查键b是否存在,is value是否为null或一个JSON数组我建议您将匹配分为两个步骤,以避免过

在空手道中,是否可以用模糊匹配标记构建逻辑和/或结构?比如:

* def response = {a:1, {b:null, c:2}}, {a:2, {b:[x,y,z], c:3}
* match each response == {a:'#number', {b:('#present' && ('#null' || '#array'), c:'#number'}

基本上,检查键
b
是否存在is value是否为null或一个JSON数组我建议您将匹配分为两个步骤,以避免过于复杂:

* def response = [{ a: 1, b: null, c: 2 }, { a: 2, b: [x, y, z], c: 3 }]
* match each response contains { b: '#present' }
* match each response == { a: '#number', b: '##array', c: '#number' }
您可以将“标记”和“自我”引用结合起来-请参见此处的最后一个示例:

为了完整性,这里有另一个选项。请注意,
isValid()
函数是可重用的,只需(全局)定义一次

* def isValid = function(x){ return !x || karate.match(x, '#array').pass }
* match each response == { a: '#number', b: '#? isValid(_)', c: '#number' }

我建议您将比赛分为两个步骤,以避免事情过于复杂:

* def response = [{ a: 1, b: null, c: 2 }, { a: 2, b: [x, y, z], c: 3 }]
* match each response contains { b: '#present' }
* match each response == { a: '#number', b: '##array', c: '#number' }
您可以将“标记”和“自我”引用结合起来-请参见此处的最后一个示例:

为了完整性,这里有另一个选项。请注意,
isValid()
函数是可重用的,只需(全局)定义一次

* def isValid = function(x){ return !x || karate.match(x, '#array').pass }
* match each response == { a: '#number', b: '#? isValid(_)', c: '#number' }

这是一个示例/虚假回答,只是为了帮助传达问题的意图。底线是,我可能会得到一个响应,该响应具有一个嵌套键,其值可以是null或JsonArray。有效的JSON:[{“timestamp”:1510967081343,“changes”:[{“op”:“add”,“value”:{“id”:[“2c918083588e2ab20158b721f8f308e6”,“2c918084594c27cf01596a0f05a60297”],“类型”:“accessProfile”}}],{“timestamp”:1501118375038,“更改”:[{“op”:“删除”,“值”:null}]]不是MCVE,再试一次:-编辑简单的JSON有那么难吗?我并不是不想帮你,回答问题的最好方法是将你的示例粘贴到一个真实的脚本中并进行尝试,所以请尝试并尊重这一点。我一直在尝试。我只是问一个关于工具支持类似(“#present”&&(“#null”| |“#数组”),如果是的话,什么是有效的语法?到目前为止,我的任何尝试都没有成功,也没有在文档中找到任何提示我可以尝试其他什么。彼得,我不明白你为什么采取这样的防御姿态。这是一个合理的问题。你提供的答案是我所期待的r、 我不明白为什么你一开始就不能提供这个。这是一个示例/虚假响应,只是为了帮助传达问题的意图。底线是,我可能得到一个响应,该响应有一个嵌套键,其值可以是null或JsonArray。有效的JSON:[{”时间戳“:1510967081343,“更改”:[{“op”:“添加”,“值”:{“id”:[“2c918083588e2ab20158b721f8f308e6”,“2c918084594c27cf01596a0f05a60297”],“类型”:“accessProfile”}}],{“时间戳”:1501118375038,“更改”:[{“op”:“remove”,“value”:null}]}]不是MCVE,再试一次:-编辑简单的JSON有那么难吗?我并不是不想帮你,回答问题的最好方法是将你的示例粘贴到一个真实的脚本中并进行尝试,所以请尝试并尊重这一点。我一直在尝试。我只是问一个关于工具支持类似(“#present”&&(“#null”| |“#数组”),如果是的话,什么是有效的语法?到目前为止,我的任何尝试都没有成功,也没有在文档中找到任何提示我可以尝试其他什么。彼得,我不明白你为什么采取这样的防御姿态。这是一个合理的问题。你提供的答案是我所期待的r、 我不明白你为什么一开始就不能提供这些。