Stub Runner Spring Cloud

Stub Runner 可以与 Spring Cloud 集成。 有关实际示例,请参阅:

Stubbing Service Discovery

Stub Runner Spring Cloud 最重要的特性在于它可以模拟:

  • DiscoveryClient

  • ReactorServiceInstanceLoadBalancer

这意味着,无论您使用的是 Zookeeper、Consul、Eureka 还是其他任何服务,在您的测试中都不需要它们。我们正在启动 WireMock 实例作为您的依赖项,并且当您使用 Feign 时,我们会告诉您的应用程序加载一个平衡的 RestTemplateDiscoveryClient 以直接调用这些模拟服务器,而不是调用真正的服务发现工具。

Test Profiles and Service Discovery

在您的集成测试中,您通常不想调用发现服务(例如 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");
    }

Additional Configuration

您可以使用 stubrunner.idsToServiceIds: 映射将存根的 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 全局设置位置的路径