Zugriff auf Ressourcen in .NET- und.NET Aspire-Tests
In diesem Artikel erfahren Sie, wie Sie in Ihren Tests über den .NET.NET Aspire App-Host auf die Ressourcen zugreifen. Der App-Host stellt die vollständige Anwendungsumgebung dar und enthält alle Ressourcen, die für die Anwendung verfügbar sind. Beim Schreiben von Funktions- oder Integrationstests mit .NET.NET Aspiremüssen Sie möglicherweise auf diese Ressourcen zugreifen, um das Verhalten Ihrer Anwendung zu überprüfen.
Zugreifen auf HTTP-Ressourcen
Um auf eine HTTP-Ressource zuzugreifen, verwenden Sie die HttpClient, um Antworten anzufordern und zu empfangen. Die DistributedApplication und DistributedApplicationFactory bieten beide eine CreateHttpClient
-Methode an, die genutzt wird, um eine HttpClient
-Instanz für eine spezifische Ressource auf Basis des Ressourcennamens vom Anwendungs-Host zu erstellen. Diese Methode verwendet auch einen optionalen endpointName
Parameter. Wenn die Ressource also über mehrere Endpunkte verfügt, können Sie angeben, welcher parameter verwendet werden soll.
Zugreifen auf andere Ressourcen
In einem Test möchten Sie möglicherweise auf andere Ressourcen durch die verbindungsinformationen zugreifen, die sie bereitstellen, z. B. durch Abfragen einer Datenbank, um den Status der Daten zu überprüfen. Hierfür verwenden Sie die ConfigurationExtensions.GetConnectionString-Methode, um die Verbindungszeichenfolge für eine Ressource abzurufen, und stellen Sie dies dann für eine Clientbibliothek innerhalb des Tests bereit, um mit der Ressource zu interagieren.
Sicherstellen, dass Ressourcen verfügbar sind
Ab .NET.NET Aspire 9 gibt es Unterstützung für das Warten auf abhängige Ressourcen (über den -Integritätsprüfmechanismus). Dies ist nützlich bei Tests, die sicherstellen, dass eine Ressource verfügbar ist, bevor Sie versuchen, darauf zuzugreifen. Die ResourceNotificationService-Klasse stellt eine ResourceNotificationService.WaitForResourceAsync Methode bereit, die verwendet wird, um zu warten, bis eine benannte Ressource verfügbar ist. Diese Methode verwendet den Ressourcennamen und den gewünschten Zustand der Ressource als Parameter und gibt eine Task
zurück, die bei Verfügbarkeit der Ressource zurückgegeben wird.
Anmerkung
Es wird empfohlen, beim Warten auf Ressourcen ein Timeout bereitzustellen, um zu verhindern, dass der Test unbegrenzt hängen bleibt, in Situationen, in denen eine Ressource nie verfügbar wird.
await resourceNotificationService.WaitForResourceAsync(
"webfrontend",
KnownResourceStates.Running
)
.WaitAsync(TimeSpan.FromSeconds(30));
Mit diesem Ressourcenbenachrichtigungsmuster wird sichergestellt, dass die Ressourcen vor dem Ausführen der Tests verfügbar sind, sodass potenzielle Probleme mit den Tests vermieden werden, die aufgrund der nicht bereitstehenden Ressourcen fehlschlagen.