在非 JVM 环境中使用 Artifactory 中的存根进行提供者合同测试
在此流程中,我们假设:
-
API 创建者和 API 使用者是非 JVM 应用程序。
-
协定定义是用 YAML 编写的。
-
存根存储是 Artifactory 或 Nexus。
-
Spring Cloud Contract Docker (SCC Docker) 和 Spring Cloud Contract Stub Runner Docker (SCC Stub Runner Docker) 映像。
您可以在此处阅读有关如何将 Spring Cloud Contract 与 Docker 结合使用的更多信息。
在这里,您可以 阅读有关如何在多语言世界中使用 Spring Cloud Contract 的博客文章。
在这里,您可以找到 一个 NodeJS 应用程序示例,该应用程序同时使用 Spring Cloud Contract 作为生产者和 消费者。
生产者流
在高级别上,生产商:
-
写入协定定义(例如,在 YAML 中)。
-
将生成工具设置为:
-
在给定端口上使用模拟服务启动应用程序。
如果无法进行模拟,您可以设置基础设施并以有状态的方式定义测试。
-
运行 Spring Cloud Contract Docker 镜像,并将正在运行的应用程序的端口作为环境变量传递。 SCC Docker 镜像:
-
从附加的卷生成测试。
-
针对正在运行的应用程序运行测试。
-
-
测试完成后,存根将上传到存根存储站点(例如 Artifactory 或 Git)。
以下 UML 图显示了生产者流程:
消费者流程
在高级别上,消费者:
-
将生成工具设置为:
-
启动 Spring Cloud Contract Stub Runner Docker 镜像并启动存根。
环境变量配置:
-
要获取的存根。
-
存储库的位置。
请注意:
-
要使用本地存储,您还可以将其附加为卷。
-
需要公开运行存根的端口。
-
-
针对正在运行的存根运行应用程序测试。
下面的 UML 图显示了使用者流: