为了编写可测试的C#代码,我大量使用了DI。
但是最近我一直在弄混IronPython,发现随着您可以模拟任何方法/类/函数等...您喜欢,对DI的需求就消失了。
对于像Python这样的动态语言,情况就是这样吗?
代替:
class Person(Address) {
...
你可以有:
class Person() {
...
// Address initialised in here.
对于动态语言,因此完全不需要动态语言编写的手册手册。
有什么建议吗?
最佳答案
依赖注入(inject)还与如何将事物连接在一起有关,这与依赖对象的可模拟性无关。有一个需要某种Foo
-连接的Bar
-instance直接实例化它,并使其完全忽略只要有连接就如何获得该连接之间是有区别的。
如果使用依赖项注入(inject),还可以获得更好的可测试性。但是,事实并非如此。通过能够覆盖任何内容来简化可测试性不会带来依赖注入(inject)的其他优点。正是由于这些原因,有许多可用的Python组件/DI框架。
关于dependency-injection - 是否需要使用动态语言进行依赖项注入(inject)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1956140/