运行 验证时忽略合同匹配规则

Contract matching rules are being ignored when running verification

我的合同中的匹配规则被忽略了。我有一份合同,我需要确保某个值是一个字符串。当 运行 verify 命令出现错误时,因为测试正在寻找完全匹配。我在消费者端使用 (javascript) pact Matchers 以便仅检查数据类型而不是值本身。提供程序是一个 rails 应用程序,使用协议版本 1.20.0.

我也尝试过使用正则表达式,但问题仍然存在。

合同是这样的。 我删除了一些敏感数据。

{
  "consumer": {
    "name": "consumer"
  },
  "provider": {
    "name": "provider"
  },
  "interactions": [
    {
      "description": "a request",
      "providerState": "provider state",
      "request": {
        "method": "POST",
        "path": "/path/api/stuff",
        "headers": {
          "Authorization": "Bearer token",
          "Content-Type": "application/json"
        }
      },
      "response": {
        "status": 200,
        "headers": {
          "Content-Type": "application/json; charset=utf-8"
        },
        "body": {
          "source_code": "abcdef"
        },
        "matchingRules": {
          "$.body": {
            "match": "type"
          }
        }
      }
    }
  ],
  "metadata": {
    "pactSpecification": {
      "version": "3.0.0"
    }
  }
}

这是我遇到的错误。

   Diff
   --------------------------------------
   Key: - is expected 
        + is actual 
   Matching keys and values are not shown

    {
   -  "source_code": "abcdef"
   +  "source_code": "xde5r8"
    }

   Description of differences
   --------------------------------------
   * Expected "abcdef" but got "xde5e3" at $.source_code

我希望这个测试能够成功,因为我希望类型匹配,在这种情况下,两个响应都是字符串。也许我在这里遗漏了一些东西。

这看起来像是 v3 body 匹配器,并非所有语言实现都共享(请参阅 [1])。您可能正在使用生成 v3 合同的消费者语言(例如 Pact JVM),但正在由 v2 提供者(例如 Pact JS)验证。