Есть ли способ использовать издевательства или подделки в ваших модульных тестах без использования инъекции или инверсии зависимостей?
Я нашел, что этот синтаксис можно использовать с TypeMock Isolator (http://learn.typemock.com/). Это коммерческий продукт, поэтому я надеялся, что другие структуры (такие как RhinoMocks) будут представлять такой синтаксис на определенном этапе.
/// Can mock objects WITHOUT DEPENDENCY INJECTION.
var hand = Isolate.Fake.Instance<Hand>();
var mouth = Isolate.Fake.Instance<Mouth>();
Isolate.Swap.NextInstance<Hand>().With(hand);
Isolate.Swap.NextInstance<Mouth>().With(mouth);
...
//notice we're not passing the mocked objects in.
var brain = new Brain();
brain.TouchIron(iron);
...
Это очень привлекательный для меня тип синтаксиса, все происходит автоматически. Мы можем создать мозг там без каких-либо необходимых зависимостей, и насмешливая структура автоматически заменит зависимости для макетных объектов. Любое тело видел этот тип вещей где-нибудь еще?
Конструктор класса мозга выглядит следующим образом, используя приведенный выше синтаксис,
public Brain()
{
_hand = new Hand();
_mouth = new Mouth();
}
В то время как пример инъекции зависимостей будет выглядеть следующим образом:
public Brain(IHand hand, IMouth mouth)
{
_hand = hand;
_mouth = mouth;
}
Спасибо.