【问题标题】:Instantiate a serviceprovider for UnitTest project为单元测试项目实例化服务提供者
【发布时间】:2021-07-29 13:48:57
【问题描述】:

所以这里有一点上下文:

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

我的问题是,当我尝试测试谷歌驱动上传服务(需要服务提供者(IServiceProvider))时,我找不到任何方法来实例化服务提供者,通常它在由 ASP.Net Core 本身启动,但就像我说的,出于测试目的,我需要在我的 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);

【问题讨论】:

    标签: asp.net-core service-provider


    【解决方案1】:

    看来修复很简单:

    我们可以在 Program 类中复用 HostBuilder :

    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
    .Build();
    
    
    var serviceCollection = new ServiceCollection();
    Startup s = new Startup(configuration);
    s.ConfigureServices(serviceCollection);
    var hostBuilder = Program.CreateHostBuilder(new string[] { }).Build().Services;
    
    //services.AddScoped<Service.Services.AuditService>();
    _auditService = new AuditService(GetDatabaseContext(), configuration, hostBuilder.GetRequiredService<IServiceProvider>());
    
    

    【讨论】:

      猜你喜欢
      • 2023-01-19
      • 2017-12-21
      • 1970-01-01
      • 2016-10-06
      • 2014-04-20
      • 2018-10-05
      • 1970-01-01
      • 1970-01-01
      • 2020-05-01
      相关资源
      最近更新 更多