【问题标题】:Spring Cloud Contract : Write Contract Test for multiple consumer with different or partially different expectationsSpring Cloud Contract:为具有不同或部分不同期望的多个消费者编写合同测试
【发布时间】:2019-04-18 21:40:01
【问题描述】:

我们正在使用 spring-cloud-contract 进行消费者驱动的测试。我有两个消费者(服务)和一个生产者服务。它们都在不同的存储库中。 生产者有一个 api,例如- /获取/产品/123。每个消费者都有不同的要求。因此,我创建了两个文件夹,并在每个文件夹中放置了一个 getProduct.groovy 文件。它看起来像下面这样:

contracts │   ├── consumerA │   │   ├── GetProduct.groovy │   ├── consumerB │   │   ├── GetProduct.groovy

两个 groovy 文件包含不同的正文并在各自的文件夹中生成存根。

【问题讨论】:

    标签: java spring spring-boot spring-cloud spring-cloud-contract


    【解决方案1】:

    为@OlgaMaciaszek 添加更多内容,

    可以指定consumerName,它必须与生产者/contract 文件夹中的子文件夹名称相同。

    可以通过使用 application.yaml 中指定的应用程序名称来选择跳过提供consumerName。但这也意味着生产者的合约文件夹中的子文件夹必须与消费者的应用名称相同。

    【讨论】:

      【解决方案2】:

      为了使stubsPerConsumer 功能正常工作,您需要确保在消费者集成测试的StubRunner 设置中将其标志设置为true,如下所示:

      @AutoConfigureStubRunner(ids = "yourids", repositoryRoot = "yourrepository",
      stubsMode = StubRunnerProperties.StubsMode.REMOTE,stubsPerConsumer = true)
      

      【讨论】:

      • 这不是我的问题。但我仍然会将其标记为已接受,因为我什至在第一次尝试时都找不到它。我已经阅读了很多 git hub 问题以得出您的答案。我也会稍微改变一下我的问题。
      • 我认为这是导致问题的原因。应用该更改后,您仍然遇到此问题吗?
      • 不,我能弄明白。但感谢您的回复。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-10
      • 2019-12-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多