Partilhar via


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.

Ver também