Accedere alle risorse nei test di .NET.NET Aspire
In questo articolo imparerai come accedere alle risorse dall'host dell'app .NET.NET Aspire nei tuoi test. L'host dell'app rappresenta l'ambiente applicazione completo e contiene tutte le risorse disponibili per l'applicazione. Quando si scrivono test funzionali o di integrazione con .NET.NET Aspire, potrebbe essere necessario accedere a queste risorse per verificare il comportamento dell'applicazione.
Accedere alle risorse HTTP
Per accedere a una risorsa HTTP, usare il HttpClient per richiedere e ricevere risposte. I DistributedApplication e i DistributedApplicationFactory forniscono entrambi un metodo CreateHttpClient
usato per creare un'istanza di HttpClient
per una risorsa specifica, in base al nome della risorsa dall'host dell'app. Questo metodo accetta anche un parametro facoltativo endpointName
, quindi se la risorsa ha più endpoint, è possibile specificare quale usare.
Accedere ad altre risorse
In un test potrebbe essere necessario accedere ad altre risorse in base alle informazioni di connessione fornite, ad esempio eseguendo query su un database per verificare lo stato dei dati. A tale scopo, si usa il metodo ConfigurationExtensions.GetConnectionString per recuperare la stringa di connessione per una risorsa e quindi fornire tale stringa a una libreria client all'interno del test per interagire con la risorsa.
Verificare che le risorse siano disponibili
A partire da .NET.NET Aspire 9, è disponibile il supporto per l'attesa delle risorse dipendenti (tramite il meccanismo di controllo integrità ). Ciò è utile nei test che assicurano che una risorsa sia disponibile prima di tentare di accedervi. La classe ResourceNotificationService fornisce un metodo ResourceNotificationService.WaitForResourceAsync usato per attendere la disponibilità di una risorsa denominata. Questo metodo accetta il nome della risorsa e lo stato desiderato della risorsa come parametri e restituisce un Task
che restituisce quando la risorsa è disponibile.
Nota
È consigliabile fornire un timeout quando si attende per le risorse, per evitare che il test venga sospeso indefinitamente in situazioni in cui una risorsa non diventa mai disponibile.
await resourceNotificationService.WaitForResourceAsync(
"webfrontend",
KnownResourceStates.Running
)
.WaitAsync(TimeSpan.FromSeconds(30));
Questo modello di notifica delle risorse garantisce che le risorse siano disponibili prima di eseguire i test, evitando potenziali problemi con i test non riusciti a causa della mancata preparazione delle risorse.