Udostępnij za pośrednictwem


Dostęp do zasobów w testach .NET.NET Aspire

W tym artykule dowiesz się, jak uzyskać dostęp do zasobów z hosta aplikacji .NET.NET Aspire w testach. Host aplikacji reprezentuje pełne środowisko aplikacji i zawiera wszystkie zasoby, które są dostępne dla aplikacji. Podczas pisania testów funkcjonalnych lub integracyjnych za pomocą .NET.NET Aspiremoże być konieczne uzyskanie dostępu do tych zasobów w celu zweryfikowania zachowania aplikacji.

Uzyskiwanie dostępu do zasobów HTTP

Aby uzyskać dostęp do zasobu HTTP, użyj HttpClient do żądania i odbierania odpowiedzi. DistributedApplication i DistributedApplicationFactory zapewniają metodę CreateHttpClient użytą do utworzenia wystąpienia HttpClient dla określonego zasobu na podstawie nazwy zasobu z hosta aplikacji. Ta metoda przyjmuje również opcjonalny parametr endpointName, więc jeśli zasób ma wiele punktów końcowych, możesz określić, którego z nich użyć.

Uzyskiwanie dostępu do innych zasobów

W teście możesz chcieć uzyskać dostęp do innych zasobów przez podane przez nie informacje o połączeniu, na przykład wysyłając zapytanie do bazy danych w celu zweryfikowania stanu danych. W tym celu używasz metody ConfigurationExtensions.GetConnectionString, aby pobrać parametry połączenia dla zasobu, a następnie przekazujesz je do biblioteki klienta podczas testu, aby interaktywować z zasobem.

Upewnij się, że zasoby są dostępne

Począwszy od 9, istnieje obsługa oczekiwania na dostępność zasobów zależnych (za pośrednictwem mechanizmu sprawdzania kondycji ). Jest to przydatne w testach, które zapewniają dostępność zasobu przed podjęciem próby uzyskania do niego dostępu. Klasa ResourceNotificationService udostępnia metodę ResourceNotificationService.WaitForResourceAsync, która jest używana do oczekiwania na udostępnienie nazwanego zasobu. Ta metoda przyjmuje nazwę zasobu i żądany stan zasobu jako parametry i zwraca Task, które oddaje, gdy zasób jest dostępny.

Notatka

Zaleca się zapewnienie limitu czasu podczas oczekiwania na zasoby, aby zapobiec zawieszaniu się testu w nieskończoność w sytuacjach, gdy zasób nigdy nie stanie się dostępny.

await resourceNotificationService.WaitForResourceAsync(
        "webfrontend",  
        KnownResourceStates.Running  
    )  
    .WaitAsync(TimeSpan.FromSeconds(30));  

Ten wzorzec powiadomień o zasobach gwarantuje, że zasoby są dostępne przed uruchomieniem testów, unikając potencjalnych problemów z niepowodzeniem testów z powodu braku gotowości zasobów.

Zobacz też