Karate:json路径元素等于不工作

Karate:json路径元素等于不工作,karate,Karate,我有一个特点: Given path 'group/' When method get Then status 200 And match response.group[*].name contains [ 'group1' ] #Works And match response.group[?(@.name == 'group1')].name contains [ 'group1' ] #Does not work 这是组/端点的响应: { "group": [

我有一个特点:

Given path 'group/'
When method get
Then status 200
And match response.group[*].name contains [ 'group1' ] #Works
And match response.group[?(@.name == 'group1')].name contains [ 'group1' ] #Does not work
这是
组/
端点的响应:

{
  "group": [
    {
      "name": "group1",
      "id": 1
    },
    {
      "name": "group2",
      "id": 2
    }
  ]
}
我得到了这个错误:

groups.groups: groups.feature:35 - evaluation (js) failed: 'group1')].name contains [ 'group1' ], <eval>:1:8 Expected ; but found )
'group1')].name contains [ 'group1' ]
        ^ in <eval> at line number 1 at column number 8

是的,这是解析器的错误,LHS上的括号混淆了它。但这是罕见的(在这种情况下是超级做作的)。执行两个步骤:

* def temp = $.group[?(@.name == 'group1')].name
* match temp contains [ 'group1' ]

请根据文档或代码提交PR,谢谢;)

我编辑了这个问题以显示我真正的问题(答案仍然有效)。我试图检索列表中的一个元素,以便使用模糊匹配器,因为contains运算符不支持模糊匹配器。解决方法很好(注意:如果我使用“response”而不是“$”,表达式将停止工作)。@italktothewind注意:阅读我得到的文档,“response”仅在与匹配运算符一起使用时有效。@Italkthewind否。如果是JS而不是JsonPath,则响应将起作用,例如
response.foo[0]
将起作用
* def temp = $.group[?(@.name == 'group1')].name
* match temp contains [ 'group1' ]