我有一个静态类,它包装了来自winspool的一些本机方法:
public static class WinSpool
{
[DllImport("winspool.drv")]
public static extern int OpenPrinter(string pPrinterName, out IntPtr phPrinter, IntPtr pDefault);
...
//some more methods here
}我想模拟它们进行单元测试,但是找不到这样的模式。(每个人都避免使用静态类吗?)
发布于 2009-12-01 11:09:09
是的,静态类通常是frowned upon in the field of unit testing and mocking。没有开源的模拟框架(如Rhino Mocks)支持静态类模拟
如果你一定要模拟静态类,那么我担心你必须使用Typemock,因为它不是免费的。
发布于 2014-01-15 03:16:45
微软已经为Visual Studio 2012旗舰版制作了一个伪造框架,允许使用填充程序模拟静态类型。垫片是为所有外部可访问方法提供委托的“伪”程序集。然后,调用通过事件筛选器进行路由,只要测试设置了它的一个委托,该委托就会处理该调用。并不是说任何人都希望鼓励不通过依赖注入处理的静态类型。更好的方向是远离对垫片的需求,转向使用DI的存根。
https://stackoverflow.com/questions/1823739
复制相似问题