【问题标题】:Using Spring Cloud Contract Stub Runner with manually created stubs将 Spring Cloud Contract Stub Runner 与手动创建的存根一起使用
【发布时间】:2019-06-23 18:32:12
【问题描述】:

我不确定将spring-cloud-contract用于我在标题中提到的目的是否正确,但我想了解它在这种情况下的用例。

我们正在更新集成测试以使用 Spring Cloud Contract。对于新功能,我们按照文档从 YAML/Groovy 创建存根,然后通过 spring-cloud-starter-contract-stub-runner 在消费者端使用它们。

我关心的是已经编写并正在使用的存根。我们不想花时间在 Groovy/YAML 中重写它们以使 Spring Cloud Contract 生成存根,因为我们已经有了存根。 现有测试配置如下:

@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
    classes = Application.class
)
@AutoConfigureWireMock(port = 8989, stubs = "classpath*:**/stubs/mappings/**/*.json", files = "classpath*:**/stubs")
class MyClientIT { ... }

在更改此测试以使用 spring-cloud-contract 时,我不知道如何配置 stub-runner:

@SpringBootTest(
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
    classes = Application.class
)
@AutoConfigureMockMvc
@AutoConfigureStubRunner(???)
public class MyNewClientIT {...}

在这种情况下是否可以并建议使用 Spring Cloud Contract?如果是这样,我们如何让 stub-runner 看到本地存储的(而不是本地或远程存储为人工制品)的存根?

谢谢...

【问题讨论】:

    标签: spring-boot integration-testing spring-boot-test wiremock spring-cloud-contract


    【解决方案1】:

    最简单的方法是获取存根并重新打包它们以遵循META-INF/group.id/artifactid/mappings/... 文件夹结构。然后,您可以使用 Stub Runner 类路径模式通过 id 选择这些存根。

    【讨论】:

    • 谢谢,我应该为group.idartifactid 定义什么?来自项目本身的那些?
    • 是的。例如。 com.example/artifact-id。顺便说一句,所有内容都在文档中进行了描述
    • 谢谢 Marcin,说实话,文档更侧重于全面采用。有一个混合方法的部分会很有帮助。
    • 我们将在下一个版本中解决这个问题。我们的首要任务之一是改进文档
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-27
    • 2020-10-24
    相关资源
    最近更新 更多