Поделиться через


Доступ к ресурсам в тестах .NET.NET Aspire

В этой статье вы узнаете, как получить доступ к ресурсам из узла приложения .NET.NET Aspire в ваших тестах. Хост приложения представляет полную среду приложения и содержит все ресурсы, доступные приложению. При написании функциональных или интеграции тестов с помощью .NET.NET Aspireможет потребоваться доступ к этим ресурсам, чтобы проверить поведение приложения.

Доступ к ресурсам HTTP

Чтобы получить доступ к ресурсу HTTP, используйте HttpClient для запроса и получения ответов. DistributedApplication и DistributedApplicationFactory предоставляют метод CreateHttpClient, который используется для создания экземпляра HttpClient для определенного ресурса на основе имени ресурса из узла приложения. Этот метод также принимает необязательный параметр endpointName, поэтому если ресурс имеет несколько конечных точек, можно указать, какой из них следует использовать.

Доступ к другим ресурсам

В тесте может потребоваться получить доступ к другим ресурсам с помощью предоставленных сведений о подключении, например, запрашивая базу данных для проверки состояния данных. Для этого вы используете метод ConfigurationExtensions.GetConnectionString для получения строки подключения для ресурса и передаете её в библиотеку client в тесте для взаимодействия с ресурсом.

Обеспечение доступности ресурсов

Начиная с .NET.NET Aspire 9, существует поддержка ожидания, пока зависимые ресурсы станут доступны (с помощью механизма проверки работоспособности ). Это полезно в тестах, которые гарантируют доступность ресурса перед попыткой доступа к нему. Класс ResourceNotificationService предоставляет метод ResourceNotificationService.WaitForResourceAsync, который используется для ожидания доступности именованного ресурса. Этот метод принимает имя ресурса и требуемое состояние ресурса в качестве параметров и возвращает Task, которая возвращает обратно, когда ресурс доступен.

Заметка

Рекомендуется предоставить время ожидания при ожидании ресурсов, чтобы предотвратить зависание теста на неопределенный срок в ситуациях, когда ресурс никогда не становится доступным.

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

Этот шаблон уведомления о ресурсах гарантирует, что ресурсы доступны перед выполнением тестов, избегая потенциальных проблем с сбоем тестов из-за отсутствия готовности ресурсов.

См. также