Přístup k prostředkům v testech .NET.NET Aspire
V tomto článku se dozvíte, jak v testech přistupovat k prostředkům z hostitele aplikace .NET.NET Aspire. Hostitel aplikace představuje celé aplikační prostředí a obsahuje všechny prostředky, které jsou pro aplikaci k dispozici. Při psaní funkčních nebo integračních testů s .NET.NET Aspiremožná budete muset k těmto prostředkům přistupovat, abyste ověřili chování aplikace.
Přístup k prostředkům HTTP
Pokud chcete získat přístup k prostředku HTTP, použijte HttpClient k vyžádání a příjmu odpovědí.
DistributedApplication i DistributedApplicationFactory poskytují metodu CreateHttpClient
, která se používá k vytvoření instance HttpClient
pro konkrétní prostředek na základě názvu prostředku z hostitele aplikace. Tato metoda také přebírá volitelný parametr endpointName
, takže pokud má prostředek více koncových bodů, můžete určit, který z nich se má použít.
Přístup k dalším prostředkům
V testu můžete chtít získat přístup k jiným prostředkům pomocí informací o připojení, které poskytují, například dotazováním databáze na ověření stavu dat. K tomu použijete metodu ConfigurationExtensions.GetConnectionString k načtení připojovacího řetězce pro prostředek a pak ji poskytnete klientské knihovně v rámci testu pro interakci s prostředkem.
Zajištění dostupnosti prostředků
Počínaje .NET.NET Aspire 9 je k dispozici podpora pro čekání na dostupnost závislých prostředků (pomocí mechanismu kontroly stavu). To je užitečné v testech, které před pokusem o přístup k prostředku zajišťují dostupnost prostředku. Třída ResourceNotificationService poskytuje ResourceNotificationService.WaitForResourceAsync metodu, která slouží k čekání, až bude pojmenovaný prostředek dostupný. Tato metoda přijímá název prostředku a požadovaný stav prostředku jako parametry a vrátí Task
, který se obnoví, když je prostředek k dispozici.
Poznámka
Doporučuje se poskytnout časový limit při čekání na prostředky, aby se v situacích, kdy prostředek nikdy nebude dostupný, zabránilo zaseknutí testu na dobu neurčitou.
await resourceNotificationService.WaitForResourceAsync(
"webfrontend",
KnownResourceStates.Running
)
.WaitAsync(TimeSpan.FromSeconds(30));
Tento model oznámení o prostředcích zajišťuje, že jsou prostředky před spuštěním testů k dispozici a zabrání potenciálním problémům s testy, které selhávají kvůli tomu, že prostředky nejsou připravené.