Spring Cloud Contract Stub Runner
在使用 Spring Cloud Contract Verifier 时,您可能会遇到的一个问题是将生成的 WireMock JSON 存根从服务器端传递到客户端(或传递给多个客户端)。对于消息传递的客户端生成,也会发生同样的情况。
手动复制JSON文件并设置消息传递的客户端是不可能的。这就是我们引入Spring Cloud Contract Stub Runner的原因。它可以自动为你下载并运行存根。
章节总结
快照版本
您可以在构建文件中添加额外的快照仓库,以便使用快照版本。这些快照版本会在每次成功构建后自动上传,具体操作如下:
发布存根为 JAR 文件
将存根发布为 jar 文件的最简单方法是集中管理存根的存储方式。例如,您可以将它们作为 jar 文件保存在 Maven 仓库中。
Stub Runner Core
stub runner 核心运行为服务协作者准备的存根。将存根视为服务的契约,您可以将 stub-runner 用作消费者驱动契约的实现。
Stub Runner JUnit 规则与 Stub Runner JUnit5 扩展
Stub Runner 附带了一个 JUnit 规则,允许你下载并运行指定组和工件 ID 的存根,如下例所示:
Stub Runner Spring Cloud
Stub Runner 可以与 Spring Cloud 集成。
使用 Stub Runner Boot 应用程序
由于当前制品仓库发布工具的限制,我们目前无法发布可执行jar包,自4.1.6版本起,我们将跳过此制品的发布。Stub Runner Boot仍可通过Docker Stub Runner Boot镜像获取,这是使用该应用程序的首选方式。您也可以在项目仓库中访问源代码并自行构建应用程序。如果制品仓库工具进行了必要的调整,我们将恢复发布此jar包。
消费者驱动的契约:每个消费者的存根
在某些情况下,同一个端点的两个消费者希望获得两种不同的响应。
从位置获取存根或合约定义
除了从 Artifactory、Nexus 或 Git 中选取存根或合约定义,您还可以指向驱动器或类路径上的某个位置。这在多模块项目中尤其有用,其中一个模块希望重用另一个模块的存根或合约,而无需将这些内容安装到本地 Maven 仓库或提交到 Git。
在运行时生成存根
作为消费者,你可能不希望等待生产者完成其实现后再发布存根。解决这个问题的一个方案是在运行时生成存根。
无存根时失败
默认情况下,如果未找到存根,Stub Runner 将失败。要更改此行为,请在注解中将 failOnNoStubs 属性设置为 false,或在 JUnit Rule 或 Extension 上调用 withFailOnNoStubs(false) 方法。以下示例展示了如何操作:
通用属性
本节简要介绍常见属性,包括: