首页 > 解决方案 > 使用 Spring Cloud Contracts 时,为什么生产者要创建合约?

问题描述

我一直在玩 Spring Cloud Contracts。到目前为止,这是我对工作流程的理解。

在服务器端

在客户端

我不明白的是这个消费者是如何驱动的?合同似乎来自生产者,消费者似乎在被动地测试生产者发布的内容(使用存根 jar 文件)。生产者可能不小心没有更新合约,而是做出重大更改。这可能导致客户端测试通过,即使它应该失败。这是真的还是我误解了从消费者方面创建合同的步骤

想法?

标签: spring-cloudconsumerspring-cloud-contract

解决方案


消费者驱动合同(CDC) 开发基本上是扩展至生产者-消费者应用程序的测试驱动开发(TDD)。由于它是 TDD - 测试应该首先出现,然后是实现。而且由于它是消费者驱动的 -消费者为生产者创建测试

所以让我们假设我们有一个 Producer 和一个 Consumer 以及一些feature需要实现的新功能。在 CDC 中,工作流程如下(您可以在官方文档中找到更多信息)。

在消费者方面:

  • 为该功能编写缺少的实现
  • 在本地克隆Producer存储库
  • 在Producer的存储库中本地定义合约(并为其自动生成单元测试)
  • 运行集成测试(在消费者方面)
  • 提交拉取请求

在生产者方面:

  • 接管拉取请求(测试已经由cosumer生成)
  • 编写缺失的实现(TDD 风格)
  • 部署您的应用
  • 在线工作

现在这一切都说得通了,因为消费者为新功能编写合同(但在生产者的存储库中)——我们有一个消费者驱动的方法


推荐阅读