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

如何在C#的WebApplicationFactory中注入Mock服务?集成测试问题

问题解决:WebApplicationFactory中无法解析Scoped服务

错误原因

_apiFactory.Services是根服务提供者,属于单例生命周期,不允许直接解析Scoped类型的服务,这就是抛出System.InvalidOperationException的核心原因。

正确获取Scoped服务的方式

必须先创建一个服务作用域,在作用域内获取Scoped服务,作用域会在使用完成后自动释放相关服务实例:

// 创建服务作用域
using var scope = _apiFactory.Services.CreateScope();
// 在作用域内获取Scoped服务
var serviceTwo = scope.ServiceProvider.GetRequiredService<IServiceTwo>();

// 执行测试逻辑...

验证测试服务是否注册成功

如果要确认ConfigureTestServices中注册的服务是否生效,同样需要在作用域内检查Server.Services:

using var scope = _apiFactory.Server.Services.CreateScope();
var serviceProvider = scope.ServiceProvider;

// 检查IServiceOne实例
var serviceOne = serviceProvider.GetService<IServiceOne>();
// 检查IServiceTwo实例
var serviceTwo = serviceProvider.GetService<IServiceTwo>();

内容的提问来源于stack exchange,提问作者sonodan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:02:06