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 全域性設定位置的路徑