当前位置: 首页 > 编程语言 > C#

如何在ASP.NETCore中验证DI容器?分享

时间:2023-04-10 16:23:02 C#

ASP.NETCore中如何对DI容器进行身份验证?在我的Startup类中,我使用ConfigureServices(IServiceCollectionservices)方法设置我的服务容器,使用来自Microsoft.Extensions.DependencyInjection的内置DI容器。我想在单元测试中验证依赖图以检查是否可以构建所有服务,以便我可以修复单元测试期间丢失的任何服务,而不是让应用程序在运行时崩溃。在之前的项目中,我使用了SimpleInjector,它在容器上有一个.Verify()方法。但是我找不到与ASP.NETCore类似的东西。是否有任何内置(或至少推荐)的方法来验证是否可以构建整个依赖图?(我能想到的最愚蠢的方法是这个,但由于框架本身注入的开放泛型,它仍然失败):startup.ConfigureServices(serviceCollection);varprovider=serviceCollection.BuildServiceProvider();foreach(serviceCollection中的varserviceDescriptor){provider.GetService(serviceDescriptor.ServiceType);为确保您的ASP.NETCore应用程序按预期工作并正确注入所有依赖项,您应该在ASP.NETCore中使用集成测试。通过这种方式,您可以使用相同的Startup类初始化TestServer,因此它会导致注入所有依赖项(没有模拟或类似的存根),并使用公开的路由/URL/路径测试您的应用程序。默认根URL的集成测试可能如下所示:以上是C#学习教程:如何在ASP.NETCore中验证DI容器?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——publicclassPrimeWebDefaultRequestShould{privatereadonlyTestServer_server;私人只读HttpClient_client;publicPrimeWebDefaultRequestShould(){//安排_server=newTestServer(newWebHostBuilder().UseStartup());_client=_server.CreateClient();}[Fact]publicasyncTaskReturnHelloWorld(){//Actvarresponse=await_client.GetAsync("/");回复。EnsureSuccessStatusCode();varresponseString=awaitresponse.Content.ReadAsStringAsync();//断言Assert.Equal("HelloWorld!",responseString);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: