Mocking habe ich eine statische Klasse, die einige native Methoden von Winspool Wraps:eine statische Klasse
public static class WinSpool
{
[DllImport("winspool.drv")]
public static extern int OpenPrinter(string pPrinterName, out IntPtr phPrinter, IntPtr pDefault);
...
//some more methods here
}
Ich mag würde sie für Unit-Tests verspotten, kann aber nicht ein Muster für diese finden. (Vermeidet jeder statische Klassen?)
Ich finde es ironisch, wie statische Mitglieder "verpönt" sind, wenn das, worüber wir wirklich die Stirn runzeln sollten, sich über Frameworks lustig machen, die statische Mitglieder nicht verspotten können. Wenn TypeMock das kann, warum können OSS-Frameworks das nicht auch tun? –
Der Grund dafür ist, dass die meisten spöttischen Frameworks Mocks mit dem Proxy-Muster implementieren, das im Wesentlichen Vererbung erfordert, und natürlich können statische Klassen nicht vererbt werden. Typemock verwendet einen völlig anderen Ansatz, indem Methodenaufrufe mit IL-Injection umgeleitet werden, wodurch statische Aufrufe simuliert werden können. – womp
Weil es * zu teuer ist, um kostenlos entwickelt zu werden * (http://stackoverflow.com/questions/1534119/is-there-any-open-source-mocking-framework-semembling-typemock) – Graviton