【发布时间】:2021-01-10 13:59:05
【问题描述】:
我有一个 dotnet-core 项目,它在启动过程中使用了很多依赖注入,这些依赖注入是用 ..Services.AddSingleton(someService) 之类的东西构建的。
如果我添加一个新服务并将它添加到其他消费服务的构造函数中,对它进行全部单元测试然后运行它,我会遇到 runtime 失败,因为我忘记添加新的服务到服务集合,它被注入为null。
有没有办法对所有服务都正确配置并在运行时可用进行单元测试?
对于一些额外的上下文,在这个特定的时间里,我有一个 Azure Function App 和一个 aspnet-core Web 应用程序,它们都依赖于现有的服务。我修改了服务以依赖一个新的服务类,并使用构造函数注入来注入它。 Startup.cs 中的 DI 配置都运行时没有错误,但在运行时运行现有服务时,它失败并出现空引用错误,因为新的依赖项已被注入为空。 (是的,我应该在构造函数中有一个 null 保护,但即使这样仍然是运行时失败)。
我确定我在某个地方看到过这样做,但不记得在哪里。
【问题讨论】:
-
向我建议的一个选项是使用集成测试来运行整个应用程序,也许只是在 CI 中,这也可以发现任何 DI 问题。
-
DI验证是一个很大的话题manydifferentviews。也就是说,在构建服务提供者时使用VerifyOnBuild 是一个开始。
标签: c# unit-testing .net-core dependency-injection