.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));
このリソース通知パターンにより、テストを実行する前にリソースを確実に使用できるようになり、リソースの準備ができていないためにテストが失敗する可能性のある問題を回避できます。
関連項目
.NET Aspire