gpt4 book ai didi

dependency-injection - 构造函数注入(inject)/依赖注入(inject) - 处理 'root' 类

转载 作者:行者123 更新时间:2023-12-04 08:20:08 32 4
gpt4 key购买 nike

我最近一直在大量使用依赖注入(inject)、测试驱动开发和单元测试,并且开始喜欢上它。

我在类中使用构造函数依赖,这样我就可以为单元测试注入(inject)模拟依赖。

但是,当您实际需要生产环境中的对象时,最好的处理方法是什么?

你用DependencyInjectionContainer.Get<MyClass>()吗?您想在任何地方创建类(class)?还是为类创建一个空白构造函数更有意义,它通过 DI 容器解析所有依赖项?

最佳答案

无需默认构造函数。

在您的生产代码中,您通常只需在应用程序中调用一次 DependencyInjectionContainer.Get(someRootType) 即可获取根类型(例如 HomeController 类)在 MVC 中)。由于所有类型都是使用构造函数注入(inject)创建的,因此容器将能够为您创建相关对象的整个图。所以从生产的角度来看,不需要有一个以上的构造函数。

由于在您的单元测试中您通常希望注入(inject)所有模拟对象,因此您的测试也不会使用默认构造函数。另一方面,让每个测试直接调用被测类的构造函数很快就会导致代码难以维护,因为当构造函数发生变化时,您将不得不更改所有测试。相反,将该逻辑集中到测试类中的工厂方法。此工厂方法可以有多个重载,以便测试轻松创建被测类。

关于dependency-injection - 构造函数注入(inject)/依赖注入(inject) - 处理 'root' 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14880762/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com