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,其结果都会被忽略。但是,如果您想重用它,您可以将 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 全局设置位置的路径

© . This site is unofficial and not affiliated with VMware.