Stub Runner Spring Cloud

Stub Runner 可以與 Spring Cloud 整合。

如需真實範例,請參閱

Stubbing 服務發現

Stub Runner Spring Cloud 最重要的功能是它可以 Stub

  • DiscoveryClient

  • ReactorServiceInstanceLoadBalancer

這表示,無論您使用 Zookeeper、Consul、Eureka 或其他任何工具,您都不需要在測試中使用它。我們正在啟動您的依賴項的 WireMock 實例,並且我們正在告訴您的應用程式,每當您使用 Feign 時,直接載入平衡的 RestTemplateDiscoveryClient,以呼叫這些 Stub 伺服器,而不是呼叫真正的服務發現工具。

測試 Profile 和服務發現

在您的整合測試中,您通常不希望呼叫發現服務(例如 Eureka)或 Config Server。這就是為什麼您要建立一個額外的測試組態,您要在其中停用這些功能。

由於 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: 映射將 Stub 的 artifactId 與應用程式名稱相符。

預設情況下,所有服務發現都會被 Stub。這表示,無論您是否有現有的 DiscoveryClient,其結果都會被忽略。但是,如果您想重複使用它,您可以將 stubrunner.cloud.delegate.enabled 設定為 true,然後您現有的 DiscoveryClient 結果將與 Stub 的結果合併。

Stub Runner 使用的預設 Maven 組態可以透過設定以下系統屬性或設定相應的環境變數來調整

  • maven.repo.local:自訂 Maven 本地儲存庫位置的路徑

  • org.apache.maven.user-settings:自訂 Maven 使用者設定位置的路徑

  • org.apache.maven.global-settings:Maven 全域設定位置的路徑