共用方式為


存取 .NET.NET Aspire 測試中的資源

在本文中,您將瞭解如何從測試中的 .NET.NET Aspire 應用程式主機存取資源。 應用程式主機代表完整的應用程式環境,並包含應用程式可用的所有資源。 使用 .NET.NET Aspire撰寫功能或整合測試時,您可能需要存取這些資源,以確認應用程式的行為。

存取 HTTP 資源

若要存取 HTTP 資源,請使用 HttpClient 來要求和接收回應。 DistributedApplicationDistributedApplicationFactory 都會根據應用程式主機的資源名稱,提供一個 CreateHttpClient 方法,用來為特定資源建立 HttpClient 實例。 此方法也會採用選擇性 endpointName 參數,因此如果資源有多個端點,您可以指定要使用哪一個端點。

存取其他資源

在測試中,您可能會想要藉由它們提供的連線資訊來存取其他資源,例如查詢資料庫以驗證數據的狀態。 為此,您可以使用 ConfigurationExtensions.GetConnectionString 方法來擷取資源的連接字串,然後將該連接字串提供給測試內的客戶端連結庫,以與資源互動。

確定資源可供使用

從 .NET.NET Aspire 9 開始,提供等候相依資源準備就緒的支援(透過 健康檢查 機制)。 這在測試中很有用,可確保資源在嘗試存取之前可供使用。 ResourceNotificationService 類別提供 ResourceNotificationService.WaitForResourceAsync 方法,用來等候具名資源可供使用。 此方法會採用資源名稱和所需的資源狀態做為參數,並傳回 Task,以在資源可用時傳回。

注意

建議您在等候資源時提供逾時,以避免在資源永遠無法使用的情況下無限期停止測試。

await resourceNotificationService.WaitForResourceAsync(
        "webfrontend",  
        KnownResourceStates.Running  
    )  
    .WaitAsync(TimeSpan.FromSeconds(30));  

此資源通知模式可確保資源在執行測試之前可供使用,避免因為資源未就緒而導致測試失敗的潛在問題。

另請參閱