空手道框架 - 在场景中使用条件逻辑 "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 }

编辑 - 这是一个更详细的答案: