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