存取 .NET.NET Aspire 測試中的資源
在本文中,您將瞭解如何從測試中的 .NET.NET Aspire 應用程式主機存取資源。 應用程式主機代表完整的應用程式環境,並包含應用程式可用的所有資源。 使用 .NET.NET Aspire撰寫功能或整合測試時,您可能需要存取這些資源,以確認應用程式的行為。
存取 HTTP 資源
若要存取 HTTP 資源,請使用 HttpClient 來要求和接收回應。
DistributedApplication 和 DistributedApplicationFactory 都會根據應用程式主機的資源名稱,提供一個 CreateHttpClient
方法,用來為特定資源建立 HttpClient
實例。 此方法也會採用選擇性 endpointName
參數,因此如果資源有多個端點,您可以指定要使用哪一個端點。
存取其他資源
在測試中,您可能會想要藉由它們提供的連線資訊來存取其他資源,例如查詢資料庫以驗證數據的狀態。 為此,您可以使用 ConfigurationExtensions.GetConnectionString 方法來擷取資源的連接字串,然後將該連接字串提供給測試內的客戶端連結庫,以與資源互動。
確定資源可供使用
從 .NET.NET Aspire 9 開始,提供等候相依資源準備就緒的支援(透過 健康檢查 機制)。 這在測試中很有用,可確保資源在嘗試存取之前可供使用。
ResourceNotificationService 類別提供 ResourceNotificationService.WaitForResourceAsync 方法,用來等候具名資源可供使用。 此方法會採用資源名稱和所需的資源狀態做為參數,並傳回 Task
,以在資源可用時傳回。
注意
建議您在等候資源時提供逾時,以避免在資源永遠無法使用的情況下無限期停止測試。
await resourceNotificationService.WaitForResourceAsync(
"webfrontend",
KnownResourceStates.Running
)
.WaitAsync(TimeSpan.FromSeconds(30));
此資源通知模式可確保資源在執行測試之前可供使用,避免因為資源未就緒而導致測試失敗的潛在問題。