Spring Cloud Contract:如何防止Producer破坏消费者?

Spring Cloud Contract: how to prevent Producer to break consumers?

我是 Spring 云合同的新手,最近我能够生成生产者合同,并使用安装在我本地 maven 存储库中的存根在消费者端编写测试。

如果我在生产者方面违反合同然后安装新的存根,如果我 运行 消费者测试它会失败。

但想象一下这个场景:

在生产者构建期间,以某种方式执行该生产者的消费者的所有测试是否有意义?如果有怎么办?

我们如何避免生产者破坏消费者?

非常感谢您的帮助。

此致

生产者执行消费者的测试没有意义,因为有时您甚至不知道谁在使用您的应用程序,例如,当您的 API 是 public 时。

预计消费者使用的存根会在消费者端中断测试,因为这是消费者知道合同已更改的方式之一。因此,您可以在消费者构建期间合同测试失败时获得快速反馈,而不是由于合同更改而导致生产错误。

但是,您可以在消费者方面拥有更多控制权,为您的测试传递存根版本,而不是获取最新版本:

@AutoConfigureStubRunner(ids = {"<url>:<service>:<VERSION>:stubs:<port>"}, stubsMode = StubRunnerProperties.StubsMode.LOCAL)

缺点是消费者的合约测试可能无法反映生产者在生产中的版本。

此外,您还可以针对不同类型的消费者制定不同的合同: