Dependency injection 依赖注入与墨青

Dependency injection 依赖注入与墨青,dependency-injection,mocking,Dependency Injection,Mocking,按照我的理解,DI允许您使用IoC容器执行以下操作 如果构造函数需要IFoo,请使用具体的类Foo:IFoo 但是,使用Moq的模拟对象有何不同?它不是也使用DI来创建一个假的Foo吗 谢谢。“依赖注入”指的是向需要它的对象提供一些外部资源的一般实践。外部资源或依赖项可以通过对象的构造函数、属性或方法提供,甚至可以作为方法参数提供。 您是对的,一种常见的做法是使用IOC来管理可能的依赖关系,并将它们提供给“客户机” 与其他模拟框架(或隔离框架)一样,Moq是一种工具,可用于生成假(或存根或模拟)

按照我的理解,DI允许您使用IoC容器执行以下操作

如果构造函数需要IFoo,请使用具体的类Foo:IFoo

但是,使用Moq的模拟对象有何不同?它不是也使用DI来创建一个假的Foo吗

谢谢。

“依赖注入”指的是向需要它的对象提供一些外部资源的一般实践。外部资源或依赖项可以通过对象的构造函数、属性或方法提供,甚至可以作为方法参数提供。 您是对的,一种常见的做法是使用IOC来管理可能的依赖关系,并将它们提供给“客户机”

与其他模拟框架(或隔离框架)一样,Moq是一种工具,可用于生成假(或存根或模拟)对象,这些对象可用作您正在测试的类的依赖项。大多数模拟框架(包括Moq,我想,但我自己不使用它)并不规定如何将伪代码传递给被测试的类(TypeMock Isolator是一个例外,因为它具有将依赖项注入被测试的类的魔力)


你没有理由不能使用IOC注册你的Moq创建的赝品并将它们提供给你的测试类,但这与Moq(或NMock或Rhino Mock)无关。

重复:@Mark Seemann,我认为这个问题并不完全是重复的——你所指的这个问题假设你知道模拟框架和国际奥委会之间的区别,但你想知道如何使用国际奥委会进行测试。这个问题看起来更多的是关于嘲弄框架和国际奥委会之间的区别。@Blair Conrad:也许吧,但这些问题也已经得到了回答:请参见