将 Spring Cloud Contract Stub Runner 与手动创建的存根一起使用

Using Spring Cloud Contract Stub Runner with manually created stubs

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

我们正在更新集成测试以使用 Spring Cloud Contract。对于新功能,我们遵循从 YAML/Groovy 创建存根的文档,然后在 spring-cloud-starter-contract-stub-runner.

的消费者端使用它们

我担心的是已经编写并正在使用的存根。我们不想在 re-writing 上花费时间 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 看到本地存储的(而不是本地或远程存储的人工制品)存根?

谢谢...

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