Pregunta

Tengo una clase estática que envuelve algunos métodos nativos de winspool:

public static class WinSpool
{
     [DllImport("winspool.drv")]
     public static extern int OpenPrinter(string pPrinterName, out IntPtr phPrinter, IntPtr pDefault);
     ...
     //some more methods here
}

Me gustaría burlarme de ellos para realizar pruebas unitarias, pero no pude encontrar un patrón para esto. (¿Todos evitan las clases estáticas?)

¿Fue útil?

Solución

Sí, la clase estática es generalmente mal visto en el campo de las pruebas unitarias y las burlas . AFAIK sin marco de burla de código abierto (como Rhino Mocks ) admite burlas de clase estática

Si debe burlarse absoluta y positivamente de la clase estática, me temo que debe ir a Typemock , que es no es gratis.

Otros consejos

Microsoft ha producido un marco de Fakes para Visual Studio 2012 Ultimate que permite burlarse de los tipos estáticos mediante shims. Las cuñas son `` falsas '' ensamblados que proporcionan delegados para todos los métodos accesibles externamente. Luego, las llamadas se enrutan a través del filtro de eventos, y cada vez que la prueba ha configurado uno de sus delegados, el delegado maneja la llamada. No es que nadie quiera alentar los tipos estáticos que no se manejan a través de la inyección de dependencia. La dirección preferida es alejarse por la necesidad de calces y hacia el uso de trozos con DI.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top