为了编写可测试的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/

10-12 12:43
查看更多