不支持的字符串匹配类型:CONTAINS_DEEP

unsupported match type for string: CONTAINS_DEEP

我正在尝试使用 Karate 对一些深度嵌套的 JSON 对象进行比较。似乎“包含深度”正是我正在寻找的,除非如果嵌套数组之一仅包含此处所示的字符串值,它似乎不起作用(简单情况,而不是我正在尝试工作的实际响应与):

Feature:

  Background:
    * configure logPrettyRequest = true
    * configure logPrettyResponse = true

  Scenario:
    * def actual =
      """
      {
        "person": {
          "hobbies": [{
            "name":"basketball",
            "equipment":[
              "basketball",
              "shoes",
              "jersey"
            ]
          }]
        }
      }
      """
    * def expected =
      """
      {
        "person": {
          "hobbies": [{
            "name":"basketball",
            "equipment":[
              "shoes",
              "jersey"
            ]
          }]
        }
      }
      """
    Then match actual contains deep expected

失败并显示以下错误消息:

unsupported match type for string: CONTAINS_DEEP

这是目前不受支持的东西吗?有计划在未来允许吗?还是有另一种方法可以做到这一点?理想情况下,我尽量避免单独比较 json 的不同部分,因为我正在处理的有效载荷非常大。

事实证明,这个问题已在最新的 karate-core 候选版本中得到解决。看到这个问题:https://github.com/intuit/karate/issues/1475.

将这个添加到我的 pom 解决了我的问题:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.intuit.karate</groupId>
            <artifactId>karate-core</artifactId>
            <version>0.9.9.RC4</version>
        </dependency>
    </dependencies>
</dependencyManagement>