Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 为UnitTest项目实例化serviceprovider_Asp.net Core_Service Provider - Fatal编程技术网

Asp.net core 为UnitTest项目实例化serviceprovider

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

这里有一点背景:

我有一个ASP.NET核心项目,所有内容都已设置好。我需要测试不同的服务。 我为此创建了一个UnitTest项目

我的问题是,当我尝试测试google drive上载服务时(需要服务提供商(IServiceProvider)),但我找不到任何方法来实例化服务提供商,通常它是由ASP.Net内核本身在启动时声明的,但正如我所说,出于测试目的,我需要在我的UnitTest项目中从零开始完全实例化它

以下是我当前对UnitTest项目的设置:

  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());