Accéder aux ressources dans les tests .NET.NET Aspire
Dans cet article, vous allez apprendre à accéder aux ressources à partir de l’hôte d’application .NET.NET Aspire dans vos tests. L’hôte de l’application représente l’environnement d’application complet et contient toutes les ressources disponibles pour l’application. Lors de l’écriture de tests fonctionnels ou d’intégration avec .NET.NET Aspire, vous devrez peut-être accéder à ces ressources pour vérifier le comportement de votre application.
Accéder aux ressources HTTP
Pour accéder à une ressource HTTP, utilisez le HttpClient pour demander et recevoir des réponses. Les DistributedApplication et les DistributedApplicationFactory fournissent toutes deux une méthode CreateHttpClient
utilisée pour créer une instance HttpClient
pour une ressource spécifique, en fonction du nom de la ressource à partir de l’hôte de l’application. Cette méthode prend également un paramètre de endpointName
facultatif. Par conséquent, si la ressource a plusieurs points de terminaison, vous pouvez spécifier celle à utiliser.
Accéder à d’autres ressources
Dans un test, vous pouvez accéder à d’autres ressources par les informations de connexion qu’ils fournissent, par exemple, interroger une base de données pour vérifier l’état des données. Pour cela, vous utilisez la méthode ConfigurationExtensions.GetConnectionString pour récupérer la chaîne de connexion d’une ressource, puis fournissez-la à une bibliothèque de client dans le test pour interagir avec la ressource.
Vérifier que les ressources sont disponibles
À partir de .NET.NET Aspire 9, il est possible d’attendre que les ressources dépendantes soient disponibles (via le mécanisme de vérification de l'état de santé ). Cela est utile dans les tests qui garantissent qu’une ressource est disponible avant de tenter de l’accéder. La classe ResourceNotificationService fournit une méthode ResourceNotificationService.WaitForResourceAsync utilisée pour attendre qu’une ressource nommée soit disponible. Cette méthode prend le nom de la ressource et l’état souhaité de la ressource en tant que paramètres et retourne un Task
qui revient lorsque la ressource est disponible.
Note
Il est recommandé de fournir un délai d’attente lorsque vous attendez des ressources, afin d’empêcher le test de s’accrocher indéfiniment dans les situations où une ressource ne devient jamais disponible.
await resourceNotificationService.WaitForResourceAsync(
"webfrontend",
KnownResourceStates.Running
)
.WaitAsync(TimeSpan.FromSeconds(30));
Ce modèle de notification de ressource garantit que les ressources sont disponibles avant d’exécuter les tests, ce qui évite les problèmes potentiels liés aux tests qui échouent en raison des ressources qui ne sont pas prêtes.