Asp.net core 为UnitTest项目实例化serviceprovider
这里有一点背景: 我有一个ASP.NET核心项目,所有内容都已设置好。我需要测试不同的服务。 我为此创建了一个UnitTest项目 我的问题是,当我尝试测试google drive上载服务时(需要服务提供商(IServiceProvider)),但我找不到任何方法来实例化服务提供商,通常它是由ASP.Net内核本身在启动时声明的,但正如我所说,出于测试目的,我需要在我的UnitTest项目中从零开始完全实例化它 以下是我当前对UnitTest项目的设置:Asp.net core 为UnitTest项目实例化serviceprovider,asp.net-core,service-provider,Asp.net Core,Service Provider,这里有一点背景: 我有一个ASP.NET核心项目,所有内容都已设置好。我需要测试不同的服务。 我为此创建了一个UnitTest项目 我的问题是,当我尝试测试google drive上载服务时(需要服务提供商(IServiceProvider)),但我找不到任何方法来实例化服务提供商,通常它是由ASP.Net内核本身在启动时声明的,但正如我所说,出于测试目的,我需要在我的UnitTest项目中从零开始完全实例化它 以下是我当前对UnitTest项目的设置: IConfiguration con
IConfiguration configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.Build();
var serviceCollection = new ServiceCollection();
Startup s = new Startup(configuration);
s.ConfigureServices(serviceCollection);
/*serviceCollection.AddScoped<GoogleService>();
//serviceCollection.AddSingleton(_appContext);
serviceCollection.AddSingleton<Service.Domains.ApplicationDomain.Bll.Models.ApplicationCache>();
serviceCollection.AddScoped<Service.Services.AuditService>();
serviceCollection.AddHttpContextAccessor();*/
IServiceProvider provider = serviceCollection.BuildServiceProvider();
//services.AddScoped<Service.Services.AuditService>();
_service = new AuditService(GetDatabaseContext(), configuration, provider);
IConfiguration configuration=new ConfigurationBuilder()
.SetBasePath(目录.GetCurrentDirectory())
.AddJsonFile(“appsettings.json”,可选:true,重载更改:true)
.Build();
var servicecolection=新servicecolection();
Startup s=新启动(配置);
s、 配置服务(serviceCollection);
/*serviceCollection.addScope();
//serviceCollection.AddSingleton(_appContext);
serviceCollection.AddSingleton();
serviceCollection.addScope();
serviceCollection.AddHttpContextAccessor()*/
IServiceProvider provider=serviceCollection.BuildServiceProvider();
//services.addScope();
_服务=新的AuditService(GetDatabaseContext(),配置,提供程序);
修复似乎很简单:
我们可以在程序类中重用HostBuilder:
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile(“appsettings.json”,可选:true,重载更改:true)
.Build();
var servicecolection=新servicecolection();
Startup s=新启动(配置);
s、 配置服务(serviceCollection);
var hostBuilder=Program.CreateHostBuilder(新字符串[]{}).Build().Services;
//services.addScope();
_auditService=新的auditService(GetDatabaseContext(),配置,hostBuilder.GetRequiredService());