Aceder aos recursos nos testes de .NETe.NET Aspire
Neste artigo, você aprenderá como acessar os recursos do host do aplicativo .NET.NET Aspire em seus testes. O host do aplicativo representa o ambiente completo do aplicativo e contém todos os recursos disponíveis para o aplicativo. Ao escrever testes funcionais ou de integração com .NET.NET Aspire, talvez seja necessário acessar esses recursos para verificar o comportamento do seu aplicativo.
Acessar recursos HTTP
Para acessar um recurso HTTP, use o HttpClient para solicitar e receber respostas. O DistributedApplication e o DistributedApplicationFactory fornecem um método CreateHttpClient
que é usado para criar uma instância HttpClient
para um recurso específico, com base no nome do recurso do host do aplicativo. Esse método também usa um parâmetro endpointName
opcional, portanto, se o recurso tiver vários pontos de extremidade, você poderá especificar qual usar.
Aceder a outros recursos
Em um teste, talvez você queira acessar outros recursos pelas informações de conexão que eles fornecem, por exemplo, consultando um banco de dados para verificar o estado dos dados. Para isso, use o método ConfigurationExtensions.GetConnectionString para recuperar a cadeia de conexão de um recurso e, em seguida, forneça-a a uma biblioteca de client dentro do teste para interagir com o recurso.
Garantir a disponibilidade de recursos
A partir do .NET.NET Aspire 9, há suporte para aguardar que os recursos dependentes estejam disponíveis (por meio do mecanismo de verificação de saúde ). Isso é útil em testes que garantem que um recurso esteja disponível antes de tentar acessá-lo. A classe ResourceNotificationService fornece um método ResourceNotificationService.WaitForResourceAsync que é usado para aguardar que um recurso nomeado esteja disponível. Esse método toma o nome do recurso e o estado desejado do recurso como parâmetros e retorna um Task
que retorna quando o recurso está disponível.
Observação
Recomenda-se fornecer um tempo limite ao esperar por recursos, para evitar que o teste fique suspenso indefinidamente em situações em que um recurso nunca fica disponível.
await resourceNotificationService.WaitForResourceAsync(
"webfrontend",
KnownResourceStates.Running
)
.WaitAsync(TimeSpan.FromSeconds(30));
Esse padrão de notificação de recursos garante que os recursos estejam disponíveis antes de executar os testes, evitando possíveis problemas com os testes falhando devido aos recursos não estarem prontos.