Stub Runner Spring Cloud
桩服务发现 (Stubbing Service Discovery)
Stub Runner Spring Cloud
最重要的特性在于它对以下组件进行了桩 (stubbing)
-
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:
map 将桩的 artifactId
与你的应用名称进行匹配。
默认情况下,所有的服务发现都被桩化。这意味着,无论你是否存在现有的 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 全局设置位置的路径