Stub Runner Spring Cloud

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 全局设置位置的路径