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

时间:2019-01-30 13:01:33

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

我不确定为标题中提到的目的使用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?如果是这样,我们如何使存根流转器看到本地存储的存根(而不是作为艺术品存储在本地或远程)?

谢谢...

1 个答案:

答案 0 :(得分:2)

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