如何从 CustomWebApplicationFactory 获取所有服务?Startup类对IDepartmentRepository和IDepartmentAppService进行了依赖注入。想要获取新的 DI 存储库或服务。我们正在创建指向原始应用程序启动的集成测试。namespace Integrationtest{ public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<TStartup> where TStartup : class { protected override void ConfigureWebHost(IWebHostBuilder builder) { builder.ConfigureAppConfiguration((hostingContext, configurationBuilder) => { var type = typeof(TStartup); var path = @"C:\\OriginalApplicationWebAPI"; configurationBuilder.AddJsonFile($"{path}\\appsettings.json", optional: true, reloadOnChange: true); configurationBuilder.AddEnvironmentVariables(); }); } }}public class DepartmentAppServiceTest : IClassFixture<CustomWebApplicationFactory<OriginalApplication.Startup>>{ public testDbContext context; private readonly HttpClient _client; public DepartmentAppServiceTest(CustomWebApplicationFactory<OriginalApplication.Startup> factory) { _client = factory.CreateClient(); factory. // trying to find services here for IDepartmentRepository }https://fullstackmark.com/post/20/painless-integration-testing-with-aspnet-core-web-api
2 回答
皈依舞
TA贡献1851条经验 获得超3个赞
是factory.Host.Services。不要忘记,您需要创建一个范围来访问范围服务,例如您的上下文:
using (var scope = _factory.Host.Services.CreateScope())
{
var foo = scope.ServiceProvider.GetRequiredService<Foo>();
// do something
}
慕标5832272
TA贡献1966条经验 获得超4个赞
收到错误:
“CustomWebApplicationFactory”不包含“Host”的定义,并且找不到接受“CustomWebApplicationFactory”类型的第一个参数的可访问扩展方法“Host”(您是否缺少 using 指令或程序集引用?)
因此,我必须在添加服务器的情况下使用它,如下所示:
using (var scope = _factory.Server.Host.Services.CreateScope()) { // do something }
- 2 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消