¿Existe alguna manera de usar simulaciones o falsificaciones en las pruebas de su unidad sin tener que usar la inyección de dependencia o la inversión o el control?Burlarse sin IoC o Inyección de Dependencia
Encontré que esta sintaxis se puede usar con TypeMock Isolator (http://learn.typemock.com/). Sin embargo, es un producto comercial, por lo que esperaba que otros marcos (como RhinoMocks) introdujeran dicha sintaxis en algún momento.
/// 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);
...
Esto es muy atractivo para mí este tipo de sintaxis, todo sucede automáticamente. Podemos crear un cerebro allí sin que se pasen las dependencias requeridas y el marco de burla sustituirá las dependencias automáticamente por los objetos simulados. Cualquier cuerpo visto este tipo de cosas en otro lugar?
El cerebro constructor de la clase tiene este aspecto ahora usando la sintaxis anterior,
public Brain()
{
_hand = new Hand();
_mouth = new Mouth();
}
Mientras que el ejemplo de inyección de dependencia se vería así,
public Brain(IHand hand, IMouth mouth)
{
_hand = hand;
_mouth = mouth;
}
Gracias.
De acuerdo, el reenvío de constructor predeterminado al real es una técnica muy útil. –