如何在ASP.NET Core中validationDI容器?
在我的Startup
类中,我使用ConfigureServices(IServiceCollection services)
方法来设置我的服务容器,使用来自Microsoft.Extensions.DependencyInjection
的内置DI容器。
我想在unit testing中validation依赖图,以检查是否可以构造所有服务,这样我就可以修复在unit testing期间丢失的任何服务,而不是让应用程序在运行时崩溃。 在以前的项目中,我使用了Simple Injector,它对容器有一个.Verify()
方法。 但是我无法找到类似ASP.NET Core的东西。
是否有任何内置(或至少推荐)的方法来validation是否可以构建整个依赖图?
(我能想到的最愚蠢的方式就是这样,但由于框架本身注入的开放式generics,它仍然会失败):
startup.ConfigureServices(serviceCollection); var provider = serviceCollection.BuildServiceProvider(); foreach (var serviceDescriptor in serviceCollection) { provider.GetService(serviceDescriptor.ServiceType); }
要确保ASP.NET Core应用程序按预期工作并且所有依赖项都是正确注入的,您应该在ASP.NET Core中使用Integration测试 。 这样您就可以使用相同的Startup
类初始化TestServer
,因此它会导致所有依赖项被注入(没有模拟或类似的存根),并使用公开的路由/ URL /路径测试您的应用程序。
默认根URL的集成测试可能如下所示:
public class PrimeWebDefaultRequestShould { private readonly TestServer _server; private readonly HttpClient _client; public PrimeWebDefaultRequestShould() { // Arrange _server = new TestServer(new WebHostBuilder().UseStartup()); _client = _server.CreateClient(); } [Fact] public async Task ReturnHelloWorld() { // Act var response = await _client.GetAsync("/"); response.EnsureSuccessStatusCode(); var responseString = await response.Content.ReadAsStringAsync(); // Assert Assert.Equal("Hello World!", responseString); } }
- ASP.NET 5 Identity 3用户在应用程序重新启动后退出
- DNX SDK版本’dnx-clr-win-x86.1.0.0-beta8-15530’无法安装
- 如何在asp.net核心中获取项目的根目录。 Directory.GetCurrentDirectory()似乎无法在mac上正常工作
- ASP.Net Core MVC – 自定义属性的客户端validation
- 在ASP.NET 5中请求BinaryRead(MVC6)
- ASP.NET Core 1.0 POST IEnumerable 到控制器
- 替换ASP.NET Core内置DI容器中的服务注册?
- 如果MSB3277出现在asp net core app中该怎么办
- 如何在ASP.NET Core中将角色添加到Windows身份validation