空手道框架 - 在场景中使用条件逻辑 "if-then-else" 的正确方法是什么?
Karate framework - What is the correct way to use conditional logic "if-then-else" in scenario?
我尝试了几种方法来使用这两个链接中提到的 IF-Else 条件逻辑
1
[2]https://github.com/intuit/karate#conditional-logic
After trying different combinations I am still unsuccessful and I don't see other ways to make my scenario work. For better visibility and understanding I have attached screenshot.
如图所示,output2.c.data 和 z.d.data 都是空数组。使用这两个引用我定义了
*def output4 = (z.d.data == output2.c.data ? {pass:true} : {pass:false})
我期望我的输出 - output4- 是 {"pass":true}
由于未知原因,我的情况与我的预期相反。
您不能对 JavaScript 中的两个数组进行等于运算,这就是为什么需要空手道的“深度等于”match
。
* def foo = { data: [] }
* def bar = { data: [] }
# wrong
* def result = foo.data == bar.data ? { pass: true } : { pass: false }
* match result == { pass: false }
# right
* def result = karate.match(foo.data, bar.data).pass ? { pass: true } : { pass: false }
* match result == { pass: true }
编辑 - 这是一个更详细的答案:
我尝试了几种方法来使用这两个链接中提到的 IF-Else 条件逻辑
1
[2]https://github.com/intuit/karate#conditional-logic
After trying different combinations I am still unsuccessful and I don't see other ways to make my scenario work. For better visibility and understanding I have attached screenshot.
如图所示,output2.c.data 和 z.d.data 都是空数组。使用这两个引用我定义了
*def output4 = (z.d.data == output2.c.data ? {pass:true} : {pass:false})
我期望我的输出 - output4- 是 {"pass":true}
由于未知原因,我的情况与我的预期相反。
您不能对 JavaScript 中的两个数组进行等于运算,这就是为什么需要空手道的“深度等于”match
。
* def foo = { data: [] }
* def bar = { data: [] }
# wrong
* def result = foo.data == bar.data ? { pass: true } : { pass: false }
* match result == { pass: false }
# right
* def result = karate.match(foo.data, bar.data).pass ? { pass: true } : { pass: false }
* match result == { pass: true }
编辑 - 这是一个更详细的答案: