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

Karate - Conditional logic with string and array

这个问题源自 之前的提问。我正在发出 Soap 请求,并且收到的响应是数组或字符串。

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

[print] M5967H

当我得到数组形式的响应时,我想出了如何遍历它,并将值传递给另一个请求。但是,有时响应会作为单个代码返回,并且会作为字符串返回。在那种情况下,我无法执行与数组相同的逻辑。我读过 Karate conditional logic,但我不知道如何让它做我想做的事。

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

这是我想到的方法之一,但由于类型不同,它不起作用:

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

如果响应作为数组返回,则此方法有效,但显然如果它作为字符串返回,它将中断。

执行此条件逻辑的正确方法是什么?另外,如果需要,请 获取更多上下文。谢谢!

有意思。此检查应该用于测试是否(不是)字符串:

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

另请参阅这个有点相关的问题: