You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置WebApplicationFactory以支持基于Azure Hybrid Connection的集成测试

关于WebApplicationFactory配置Hybrid Connections的解答

你无法直接通过配置WebApplicationFactory来支持Hybrid Connections,这项能力是Azure App Service运行时原生提供的专属网络隧道功能,依赖App Service环境内置的身份校验、流量封装转发逻辑,而WebApplicationFactory是在独立进程中启动ASP.NET Core测试宿主,不会加载App Service的运行时组件,因此不具备直接接入Hybrid Connections的条件。

可选解决方案

方案1:Mock本地资源依赖(推荐用于单元/集成测试阶段验证业务逻辑)

将API中调用本地资源的HTTP客户端封装为独立的服务接口,在集成测试启动时通过WebApplicationFactory的服务重写能力替换为Mock实现,无需实际访问本地资源即可完成接口逻辑验证,示例配置如下:

public class TestWebApplicationFactory<TProgram> : WebApplicationFactory<TProgram> 
    where TProgram : class
{
    protected override void ConfigureWebHost(IWebHostBuilder builder)
    {
        builder.ConfigureTestServices(services =>
        {
            // 移除生产环境的本地资源客户端实现
            var localClientSvc = services.FirstOrDefault(s => s.ServiceType == typeof(ILocalResourceHttpClient));
            if (localClientSvc != null) services.Remove(localClientSvc);
            
            // 注入模拟的本地资源客户端,返回预设的测试数据
            services.AddScoped<ILocalResourceHttpClient, MockLocalResourceHttpClient>();
        });
    }
}

方案2:给Azure DevOps测试代理配置网络连通能力

如果需要验证完整的真实调用链路,可在运行测试的Azure DevOps自托管代理节点上安装Hybrid Connection Manager,配置和你线上App Service完全一致的Hybrid Connection连接参数,此时代理节点本身的网络就可以正常访问目标本地资源,WebApplicationFactory启动的测试进程不需要额外配置即可直接调用对应资源。

方案3:把集成测试后置到发布阶段运行

将集成测试调整为发布后验证任务,在App Service部署完成后,触发运行部署在同个App Service(或配置了相同Hybrid Connection的其他App Service)中的测试用例,天然继承App Service的网络能力。

内容的提问来源于stack exchange,提问作者Kristoffer Jälén

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:15:01