首页 > 解决方案 > AspNetCore Web 应用程序有 100 多个服务。如何为单元测试项目注册所有这些依赖项

问题描述

AspNetCore Web 应用程序有 100 多种服务,可通过 ServiceProvider 使用,并可在 ServiceCollection 列表中查看。示例服务:IConfigurtion、IConfiguration 提供程序等。

如何为单元测试项目注册所有这些依赖项。

我猜,在 Web 项目中,这些依赖项注册在 'WebHost.CreateDefaultBuilder' 方法中。

public class Program
    {
        public static void Main(string[] args)
        {
            BuildWebHost(args).Run();
        }

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseKestrel(options => options.AddServerHeader = false)
                .UseIISIntegration()
                .UseStartup<Startup>()
                .Build();
    } 

在我的单元测试项目中。我可以一一注册这些服务,但是查看这么长的依赖列表效率不高。

services.AddSingleton<IConfiguration, ConfigurationRoot>();

我可能不需要它们,但是运行单元测试项目并发现这个初始化失败或者那个等很麻烦。

注意:使用以下语法注册 DbContext 是注册大约 12 个服务。

services.AddDbContext<AppDbContext>(options =>
              options.UseInMemoryDatabase("Db"),
              ServiceLifetime.Scoped
              );

所以我的问题是,我是否可以调用任何方法,以便在 Web 项目中为我的 UnitTest 项目正确解析依赖项。

注意:我可以处理我在 Web 中注册的那些服务。我只关心那些在框架后面注册的那些。

任何帮助表示赞赏。谢谢!

标签: c#unit-testingasp.net-coremstest

解决方案


推荐阅读