空手道框架-在场景中使用条件逻辑“ if-then-else”的正确方法是什么?

时间:2018-09-08 17:12:40

标签: json cucumber-jvm karate

我尝试了两种方法来利用这两个链接中提到的IF-Else条件逻辑

1 How to check additional values with if condition (using karate framework)?

[ 2] https://github.com/intuit/karate#conditional-logic

尝试了不同的组合后,我仍然没有成功,而且我看不到其他方法可以使我的方案发挥作用。为了提供更好的可见性和理解性,我附加了屏幕截图。

conditional logic issue in karate

如图所示,output2.c.data和z.d.data都是空数组。使用这两个引用,我定义了
*def output4 = (z.d.data == output2.c.data ? {pass:true} : {pass:false})

我期望我的输出- output4 -是{"pass":true}

由于未知的原因,我的情况与预期相反。

1 个答案:

答案 0 :(得分:1)

编辑:请不要在将来为此类示例制作屏幕截图,这样更易​​于阅读和粘贴代码以进行试用。

您无法在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 }