【发布时间】:2017-07-02 13:14:55
【问题描述】:
我在 .NET Core 中开发集成测试。因为控制器有多个依赖项,手动创建它们的实例很不方便。以下是我创建 ServiceProvider 实例以访问 .NET Core 原生 DI 容器的方法:
HostingEnvironment env = new HostingEnvironment();
env.ContentRootPath = Directory.GetCurrentDirectory();
env.EnvironmentName = "Development";
Startup startup = new Startup(env);
ServiceCollection sc = new ServiceCollection();
startup.ConfigureServices(sc);
ServiceProvider = sc.BuildServiceProvider();
Startup 类取自测试程序集。
令我惊讶的是,服务提供商无法创建控制器实例。它可以实例化注册的服务,但不能实例化控制器。有人知道为什么会这样吗?
【问题讨论】:
-
您是否尝试过使用
TestServer而不是自己接线? docs.microsoft.com/en-us/aspnet/core/testing/…
标签: dependency-injection asp.net-core asp.net-core-mvc