0

如果我在提供者的请求正文中添加任何内容或重命名或删除与合同不同的任何字段,则提供者端匹配不起作用,那么它不会失败。

例如,合同文件请求正文中包含名称字段和相同的字段,如果我仅在请求中删除或重命名提供者的请求正文(而不是响应),则协议不会验证这一点。

我想在提供者方面确认请求正文的匹配是否有效?

我可以在协议文件中看到请求正文的匹配规则,但它似乎不起作用。

4

1 回答 1

0

将新字段添加到 Pact 合同不需要的提供者响应中将被忽略。

为什么会这样?Pact 遵循Postel 定律响应中的意外元素不应给消费者带来问题。其他消费者可能有不同但重叠的需求,因此未能基于这些理由构建提供者是有问题的。

根据我们的文档,这意味着:

发送的内容要保守——当消费者项目中的模拟服务器将实际请求与预期请求进行比较时,实际请求正文不允许包含未在预期请求正文中定义的字段。我们不希望真正的消费者“泄露”我们不知道的数据的情况。

在您接受的内容方面保持自由 - 在验证提供者项目中的协议时,响应正文和标头可能包含未在期望中定义的字段,假设您的消费者将忽略任何额外的字段。这允许提供者在不破坏现有消费者的情况下发展(与糟糕的旧 WSDL 时代不同)。

你的第二点:

我想在提供者方面确认请求正文的匹配是否有效?

听起来它正在工作。如果您更改数据类型或有意外的响应代码,它会正确识别重大更改。

如果您重命名消费者所需的字段,那么这听起来像是一个错误(就 Pact 功能而言,这是一个致命的错误,所以我持怀疑态度)。

于 2021-03-11T03:12:23.497 回答