空手道 JSON 过滤路径无法参数化

Karate JSON filter paths not able to be parametrize

我正在尝试动态替换以下表达式中的值 'US'。 配置中的位置是一个数组而不是 json 对象。

* def selectedConfig= $configs[?(@.configId=='US')] 

#上面这个有效

但是我没有成功地把它变成一个动态表达式。我尝试了以下变体和 fe,请帮忙

* def activeConfigId = 'US'
* def selectedConfig= karate.jsonPath("$configs[?(@.configId=='" + activeConfigId + "')]")

我看到有人也问过类似的问题,但没有回答如何使这个表达式动态化。 Karate: parametric json path expressions

您需要更仔细地阅读文档和示例。这是一个有效的例子:

* def configId = 'US'
* def response = [{configId: 'AA', data: 'first'}, {configId: 'US', data: 'second'}]
* def selectedConfig = karate.jsonPath(response, "$[?(@.configId=='" + configId + "')]")
* match selectedConfig[0] == { configId: 'US', data: 'second' }

如果使用karate.jsonPath()太难,请看karate.filter()

并且由于您似乎在尝试进行一些智能配置切换,请参考: