微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为 UnitTest 项目实例化一个 serviceprovider

如何解决为 UnitTest 项目实例化一个 serviceprovider

所以这里有一点背景:

我有一个 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);

解决方法

看来修复很简单:

我们可以在 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>());

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?