tengo una clase estática que envuelve algunos métodos nativos de winspool:que imita una clase estática
public static class WinSpool
{
[DllImport("winspool.drv")]
public static extern int OpenPrinter(string pPrinterName, out IntPtr phPrinter, IntPtr pDefault);
...
//some more methods here
}
quisiera burlarse de ellos para las pruebas unitarias, pero no pudo encontrar un patrón para esto. (¿Todos evitan las clases estáticas?)
Me parece irónico cómo los miembros estáticos son "mal vistos", cuando lo que realmente debemos desaprobar son los marcos de burla que no pueden burlarse de los miembros estáticos. Después de todo, si TypeMock puede hacer esto, ¿por qué los marcos OSS no pueden hacer lo mismo? –
La razón de esto es que la mayoría de los frameworks burladores implementan simulaciones usando el patrón Proxy, que esencialmente requiere herencia, y por supuesto no se pueden heredar las clases estáticas. Typemock utiliza un enfoque completamente diferente, mediante la redirección de llamadas a métodos con inyección de IL, lo que le da la capacidad de simular llamadas estáticas. – womp
Porque es * demasiado caro para ser desarrollado gratis * (http://stackoverflow.com/questions/1534119/is-there-any-open-source-mocking-framework-resembling-typemock) – Graviton