我理解它的方式,DI允许您使用IoC容器来执行类似
的操作如果构造函数需要IFoo,请使用具体类Foo:IFoo。
但是使用Moq的Mock对象有何不同?它不是也用DI来创造假的Foo吗?
感谢。
答案 0 :(得分:2)
“依赖注入”是指向需要它的对象提供一些外部资源的一般做法。外部资源或依赖项可以通过对象的构造函数,属性或方法提供,甚至可以作为方法参数提供。 你是对的,通常的做法是使用IOC来管理可能的依赖关系并将它们提供给他们的“客户”。
与其他模拟框架(或隔离框架)一样,Moq是一种工具,可用于生成伪(或存根或模拟)对象,这些对象可用作您正在测试的类的依赖项。大多数模拟框架(包括Moq,我认为,但我自己并不使用它)并没有规定伪造如何传递给被测试的类(TypeMock Isolator在这里是一个例外,因为它具有可以注入的魔法依赖于被测试的类)。没有理由你不能使用IOC注册你的Moq创建的假货并将它们提供给你正在测试的类,但这与Moq(或NMock或Rhino Mocks)无关。