空手道-具有字符串和数组的条件逻辑

时间:2019-11-25 18:05:13

标签: soap cucumber conditional-statements karate

此问题源自先前提出的this question。我正在发出一个Soap请求,并且接收到的响应是数组或字符串。

[print] [   "M4205N",   "M4206U" ]

[print] M5967H

当我将响应作为数组获取时,我想出了如何遍历它,并将值传递给另一个请求。但是,有时响应将作为单个Code返回,并且将作为String返回。在那种情况下,我无法执行与数组相同的逻辑。我已经读过Karate conditional logic,但无法弄清楚如何使它按我的意愿去做。

我想做这样的事情: 如果响应以字符串形式返回,则使用一个值调用此方法。 如果响应以数组形式返回,则调用此方法并传递数组中的每个值。

这是我想到的方法之一,但由于类型差异而无法使用:

* def memberCodes = memberCodes.size() > 1 ? karate.mapWithKey(memberCodes, 'memberCode') : {}
* def result = call read('OtherRequest.feature') memberCodes

如果响应以数组形式返回,则此方法有效,但是显然,如果将其作为String返回,它将中断。

执行此条件逻辑的正确方法是什么?另外,如果需要,请refer to my previous question获得更多背景信息。谢谢!

1 个答案:

答案 0 :(得分:1)

有趣。此检查应该可以测试是否(不是)字符串:

* def memberCodes = typeof memberCodes != 'string' ? karate.mapWithKey(memberCodes, 'memberCode') : {}

也请参考以下相关问题:https://stackoverflow.com/a/58543843/143475