Инъекция зависимости и Moqing - PullRequest
0 голосов
/ 12 июня 2010

Как я понимаю, DI позволяет вам использовать контейнер IoC для выполнения чего-то вроде

Если конструктору требуется IFoo, используйте конкретный класс Foo: IFoo.

Но чем отличается объект Mock от Moq?Разве он не использует DI для создания поддельного Foo?

Спасибо.

1 Ответ

2 голосов
/ 12 июня 2010

«Внедрение зависимостей» относится к общей практике предоставления некоторого внешнего ресурса объекту, который требует его. Внешний ресурс или зависимость может быть предоставлен через конструктор объекта, свойство или метод или даже как параметр метода. И вы правы, обычной практикой является использование IOC для управления возможными зависимостями и предоставления их своим «клиентам».

Moq, как и другие фальшивые фреймворки (или фреймворки изоляции), - это инструмент, который можно использовать для генерации поддельных (или заглушки или фальшивых) объектов, которые можно использовать как зависимости для класса, который вы тестируете. Большинство фальшивых фреймворков (включая Moq, я думаю, но я не использую его сам) не диктуют, как подделки передаются тестируемому классу (здесь исключение TypeMock Isolator в том смысле, что в нем есть магия, которая может внедрить зависимости в тестируемом классе).

Нет никаких причин, по которым вы не могли бы использовать IOC для регистрации созданных в Moq подделок и подачи их в тестируемый класс, но это действительно не имеет никакого отношения к Moq (или NMock или Rhino Mocks).

...