¿Es posible burlarse de la clase Assembly
?¿Cómo puedo simular el montaje?
Si es así, ¿en qué marco y cómo?
De lo contrario, ¿cómo escribir pruebas para el código que usa Assembly
?
¿Es posible burlarse de la clase Assembly
?¿Cómo puedo simular el montaje?
Si es así, ¿en qué marco y cómo?
De lo contrario, ¿cómo escribir pruebas para el código que usa Assembly
?
TypeMock es muy potente. Supongo que puede hacerlo. Para los otros frameworks simulados como Moq o Rhino, necesitarás usar otra estrategia. Estrategia
para Rhino o Moq:
Por ejemplo: Usted está utilizando el Asssembly clase para obtener el nombre completo de montaje.
public class YourClass
{
public string GetFullName()
{
Assembly ass = Assembly.GetExecutingAssembly();
return ass.FullName;
}
}
La Asamblea clase derivada de la interfaz _Assembly
. Entonces, en lugar de usar Asamblea directamente, puede inyectar la interfaz. Entonces, es fácil burlarse de la interfaz para su prueba.
La clase modificación:
public class YourClass
{
private _Assembly _assbl;
public YourClass(_Assembly assbl)
{
_assbl = assbl;
}
public string GetFullName()
{
return _assbl.FullName;
}
}
En su prueba, que se burlan de _Assembly
:
public void TestDoSomething()
{
var assbl = MockRepository.GenerateStub<_Assembly>();
YourClass yc = new YourClass(assbl);
string fullName = yc.GetFullName();
//Test conditions
}
Lo hace. ¿Puede explicar cómo lo haría en un marco simulado "tradicional" (como Moq o Rhino)? –
Oh, no sabía acerca de esta interfaz "oculta" '_Assembly'. Gracias. Si lo hiciera, no habría hecho la pregunta. Supongo que si Assembly no implementó esta interfaz, podría haber creado uno yo mismo ('IAssembly') y escribir un contenedor que lo implemente y use la implementación' Assembly', ¿es correcto? –
@ Martinho: es correcto –
contarla "tu madre es un hámster y su padre huele a eldeberries"? – patros
@patros: me tomó un tiempo entender ... –
@Martinho Fernandes: Agregué un ejemplo para Rhino. –