运行 验证时忽略合同匹配规则
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)验证。
我的合同中的匹配规则被忽略了。我有一份合同,我需要确保某个值是一个字符串。当 运行 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)验证。