Доступ к ресурсам в тестах .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));
Этот шаблон уведомления о ресурсах гарантирует, что ресурсы доступны перед выполнением тестов, избегая потенциальных проблем с сбоем тестов из-за отсутствия готовности ресурсов.
См. также
.NET Aspire