|
请使用 spring-cloud-contract 5.0.2 获取最新稳定版本! |
存根运行器 Spring Cloud
存根服务发现
《0》最重要的特性是它能够进行存根(stub)操作:
-
DiscoveryClient -
ReactorServiceInstanceLoadBalancer
这意味着,无论您使用 Zookeeper、Consul、Eureka 还是其他任何工具,您的测试中都不需要这些组件。我们正在为您的依赖项启动 WireMock 实例,并告知您的应用程序:当您使用 Feign 时,应直接加载一个均衡的 RestTemplate 或 DiscoveryClient,并调用这些模拟服务器,而不是调用真实的服务发现工具。
测试配置文件和服务发现
在您的集成测试中,通常不希望调用服务发现服务(如 Eureka)或配置服务器。这就是为什么您需要创建一个额外的测试配置,以禁用这些功能。
由于某些限制,spring-cloud-commons,要实现这一点,您必须在静态块(如以下 Eureka 示例所示)中禁用这些属性。
//Hack to work around https://github.com/spring-cloud/spring-cloud-commons/issues/156
static {
System.setProperty("eureka.client.enabled", "false");
System.setProperty("spring.cloud.config.failFast", "false");
}
额外配置
您可以使用 stubrunner.idsToServiceIds: 映射将存根的 artifactId 与您的应用程序名称进行匹配。
默认情况下,所有服务发现均被模拟(stubbed)。这意味着,无论您是否已有现有的 DiscoveryClient,其结果都会被忽略。但如果您希望重用它,可以将 stubrunner.cloud.delegate.enabled 设置为 true,然后您的现有 DiscoveryClient 结果将与模拟结果合并。 |
Stub Runner 默认使用的 Maven 配置可以通过设置以下系统属性或相应的环境变量进行调整:
-
maven.repo.local: 自定义 Maven 本地仓库位置的路径 -
org.apache.maven.user-settings: 自定义 Maven 用户设置文件的路径 -
org.apache.maven.global-settings: 到 maven 全局设置文件的路径