Spring Cloud Contract:为具有不同或部分不同期望的多个消费者编写合同测试
Spring Cloud Contract : Write Contract Test for multiple consumer with different or partially different expectations
我们正在使用 spring-cloud-contract 进行消费者驱动测试。我有两个消费者(服务)和一个生产者服务。它们都在不同的存储库中。
生产者有一个 api 例如- /get/product/123。每个消费者都有不同的要求。所以,我创建了两个文件夹,并在每个文件夹中放了一个 getProduct.groovy 文件。它看起来像下面这样:
contracts
│ ├── consumerA
│ │ ├── GetProduct.groovy
│ ├── consumerB
│ │ ├── GetProduct.groovy
两个 groovy 文件包含不同的正文并在各自的文件夹中生成存根。
为了使 stubsPerConsumer
功能正常工作,您需要确保在消费者集成测试的 StubRunner
设置中将其标志设置为 true,如下所示:
@AutoConfigureStubRunner(ids = "yourids", repositoryRoot = "yourrepository",
stubsMode = StubRunnerProperties.StubsMode.REMOTE,stubsPerConsumer = true)
向@OlgaMaciaszek 添加更多内容,
可以指定 consumerName
必须与 producers /contract
文件夹中的子文件夹名称相同。
可以选择使用 application.yaml 中指定的应用程序名称来跳过提供 consumerName
。但这也意味着生产者的合约文件夹中的子文件夹必须与消费者的应用程序名称相同。
我们正在使用 spring-cloud-contract 进行消费者驱动测试。我有两个消费者(服务)和一个生产者服务。它们都在不同的存储库中。 生产者有一个 api 例如- /get/product/123。每个消费者都有不同的要求。所以,我创建了两个文件夹,并在每个文件夹中放了一个 getProduct.groovy 文件。它看起来像下面这样:
contracts
│ ├── consumerA
│ │ ├── GetProduct.groovy
│ ├── consumerB
│ │ ├── GetProduct.groovy
两个 groovy 文件包含不同的正文并在各自的文件夹中生成存根。
为了使 stubsPerConsumer
功能正常工作,您需要确保在消费者集成测试的 StubRunner
设置中将其标志设置为 true,如下所示:
@AutoConfigureStubRunner(ids = "yourids", repositoryRoot = "yourrepository",
stubsMode = StubRunnerProperties.StubsMode.REMOTE,stubsPerConsumer = true)
向@OlgaMaciaszek 添加更多内容,
可以指定 consumerName
必须与 producers /contract
文件夹中的子文件夹名称相同。
可以选择使用 application.yaml 中指定的应用程序名称来跳过提供 consumerName
。但这也意味着生产者的合约文件夹中的子文件夹必须与消费者的应用程序名称相同。