【问题标题】:How to create application scope for nunit for ASP.NET Core 3.1 project如何为 ASP.NET Core 3.1 项目的 nunit 创建应用程序范围
【发布时间】:2022-11-02 23:48:08
【问题描述】:
我是单元测试的新手,我认为我需要获取我的 ASP.NET Core 3.1 Web 的应用程序范围,以便我可以获得一些范围内的服务以用于测试。
问题:如何获取 app 对象以便获取范围?
我看到的错误是
无法从根提供程序解析范围服务“className”。
从谷歌搜索中,我想我看到问题在于className 是在Startup.cs 和services.AddScoped<className>() 中的应用程序ConfigureServices 方法中创建的。
我认为问题在于 Nunit 没有在与正在测试的应用程序相同的范围内运行(?)(不确定)。
无论如何,我如何在 nunit 测试框架中获取应用程序?
TIA,
欧文
【问题讨论】:
标签:
nunit
asp.net-core-3.1
【解决方案1】:
部分答案:
IWebhostBuilder builder = Project.Program.CreateTestHostBuilder(new string[] {});
IServiceProvider _serivces = builder.Build.Services();
IServiceScope scope = _services.CreateScope();
className classVar = scope.ServiceProvider.GetRequiredService<className>();
所以现在我有一个范围和访问 ServiceProvider 来获取注入服务的实例。
我仍然不知道如何获取应用程序实例(或者,真正的问题是:如何注入不同版本的类进行测试?)。
谢谢,
欧文