Stub Runner Spring Cloud
Stub Runner 可以与 Spring Cloud 集成。
有关实际示例,请参阅:
服务发现存根
Stub Runner Spring Cloud 最重要的特性在于它能够对以下内容进行存根:
-
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");
}
额外配置
您可以通过使用 spring.cloud.contract.stubrunner.idsToServiceIds: 映射,将存根的 artifactId 与您的应用程序名称进行匹配。
默认情况下,所有服务发现都是存根化的。这意味着,无论您是否拥有现有的 DiscoveryClient,其结果都会被忽略。然而,如果您想复用现有的 DiscoveryClient,可以将 spring.cloud.contract.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 全局设置文件位置的路径