访问 .NET.NET Aspire 测试中的资源
本文介绍如何在测试中从 .NET.NET Aspire 应用主机访问资源。 应用主机表示完整的应用程序环境,并包含可供应用程序使用的所有资源。 使用 .NET.NET Aspire编写功能测试或集成测试时,可能需要访问这些资源来验证应用程序的行为。
访问 HTTP 资源
若要访问 HTTP 资源,请使用 HttpClient 来请求和接收响应。
DistributedApplication 和 DistributedApplicationFactory 都提供一个 CreateHttpClient
方法,该方法用于根据应用主机中的资源名称为特定资源创建 HttpClient
实例。 此方法还采用可选的 endpointName
参数,因此,如果资源有多个终结点,则可以指定要使用的终结点。
访问其他资源
在测试中,你可能希望通过它们提供的连接信息来访问其他资源,例如,查询数据库以验证数据的状态。 为此,请使用 ConfigurationExtensions.GetConnectionString 方法检索资源的连接字符串,然后将该连接字符串提供给测试中的客户端库以与资源交互。
确保资源可用
从 .NET.NET Aspire 9 开始,支持等待依赖资源变为可用(通过 健康检查 机制)。 这在测试中非常有用,在尝试访问资源之前确保资源可用。
ResourceNotificationService 类提供了一个 ResourceNotificationService.WaitForResourceAsync 方法,用于等待命名资源可用。 此方法采用资源名称和所需的资源状态作为参数,并返回一个在资源可用时返回的 Task
。
注意
建议在等待资源时设置超时时间,以防止测试在资源永不可用的情况下无限期挂起。
await resourceNotificationService.WaitForResourceAsync(
"webfrontend",
KnownResourceStates.Running
)
.WaitAsync(TimeSpan.FromSeconds(30));
此资源通知模式可确保资源在运行测试之前可用,避免由于资源未就绪而导致测试失败的潜在问题。