提供商驱动的合约测试可以通过 pact 实现吗?

问题描述 投票:0回答:4

是否可以通过pact让提供者创建合约的定义并与消费者共享?

pact
4个回答
1
投票

还没有,看看这篇文章

我建议 Spring Cloud Contract 采用提供商驱动的方法。


1
投票

首先,不,目前不可能让提供商生成合同并与消费者共享。我们正在 Pactflow 致力于

我认为了解如何管理许多消费者定义合同并且唯一的提供商必须遵守所有合同的情况会很有用。

  1. 在大多数情况下,这不是问题 - 消费者通常以非常相似的方式使用您的 API(尤其是在改造时)
  2. 从消费者驱动的意义上来说,很少有多个消费者同时驱动 API 的设计 - 通常只有一个消费者帮助创建初始形状
  3. 如果消费者开始对提供商有非常不同(可能相互冲突)的需求,那么也许确实有理由将提供商拆分为多个服务。
  4. 提供商还可以自由拒绝消费者的任何请求(即具有新/不同期望的合同)。

1
投票

另一种看待此问题的方法是利用 API 规范,例如 OpenAPI(代表提供商的 API)作为 API 合约 合同驱动开发。这是一个简短的解释

该方法的粗略轮廓

    代表您的提供商的
  • OpenAPI 规范针对您的提供商应用程序作为Contract as Test 运行。这样您就知道您的提供商遵守规范,并且可以安全地与消费者分享。
  • 相同的 OpenAPI 规范可以用作 Stub 来模拟消费者的提供者。该存根真正代表了提供商,因为它基于双方商定的 OpenAPI 规范
  • 您还可以在中央合约存储库(版本控制系统,例如 Git)中维护 API 规范,以确保消费者和提供者始终引用单一事实来源

合同驱动开发适合所有开发风格,例如消费者优先、提供商优先和API优先


0
投票

看到这篇优秀的(多部分)文章,权衡了消费者驱动和提供商驱动的合同测试之间的不同权衡。

https://lakitna.medium.com/contract-based-testing-part-1-introduction-b42e6236720a

一定要全程跟随:)

© www.soinside.com 2019 - 2024. All rights reserved.