在非 JVM 环境中使用 Artifactory 中的存根进行提供者契约测试
在这个流程中,我们假设:
-
API 生产者与 API 消费者均为非 JVM 应用程序。
-
契约定义采用 YAML 格式编写。
-
存根存储使用 Artifactory 或 Nexus。
-
采用 Spring Cloud Contract Docker(SCC Docker)与 Spring Cloud Contract Stub Runner Docker(SCC Stub Runner Docker)镜像。
你可以在此处阅读更多关于如何在 Docker 中使用 Spring Cloud Contract 的信息此处。
这里,你可以阅读一篇关于如何在多语言环境中使用 Spring Cloud Contract 的博客文章。
这里,你可以找到一个 NodeJS 应用程序的示例,该应用程序同时将 Spring Cloud Contract 用作生产者和消费者。
生产者流程
从高层次来看,生产者:
-
编写合约定义(例如,使用YAML格式)。
-
配置构建工具以:
-
在指定端口上启动带有模拟服务的应用程序。
如果无法进行模拟,您可以以有状态的方式设置基础设施并定义测试。
-
运行Spring Cloud Contract Docker镜像,并将运行中应用程序的端口作为环境变量传递。SCC Docker镜像:
-
从挂载的卷生成测试。
-
针对运行中的应用程序执行测试。
-
-
测试完成后,存根会上传到存根存储站点(例如 Artifactory 或 Git)。
下面的 UML 图展示了生产者流程:

消费者流程
从高层次来看,消费者:
-
设置构建工具以:
-
启动 Spring Cloud Contract Stub Runner Docker 镜像并启动存根。
环境变量配置:
-
要获取的存根。
-
存储库的位置。
请注意:
-
要使用本地存储,您也可以将其作为卷挂载。
-
需要暴露存根运行的端口。
-
-
针对正在运行的存根运行应用程序测试。
以下 UML 图展示了消费者流程:
