我有一个应用程序发送出许多PDF的打印机。有没有人有任何经验创建一个代表本地打印机的Mock对象?如何在.NET中模拟打印机?
5
A
回答
12
不完全确定你想要做什么,但这可能有帮助。
为了模拟打印机(或任何其他外部设备),您应该将所有对打印机的调用封装在一个接口后面,例如,
interface IPrinter
{
void Print(PrintData data);
}
所有其他代码必须通过此接口与打印机通信。
然后,您可以实现此接口,讨论到实际打印机的一个版本,一个假的对象用讽刺的框架像Rhino Mocks或测试时等
假冒的对象可以很容易地嘲笑,你可以使用Moq,或者你可以自己实施一个假的。
public class FakePrinter : IPrinter
{
public void Print(PrintData data)
{
// Write to output window or something
}
}
更新:使用打印机,然后就会是这个样子
所有类:
public class ClassThatPrints
{
private IPrinter _Printer;
// Constructor used in production
public ClassThatPrints() : this(new RealPrinter())
{
}
// Constructor used when testing
public ClassThatPrints(IPrinter printer)
{
_Printer = printer;
}
public void MethodThatPrints()
{
...
_Printer.Print(printData)
}
}
顺便说一句,如果你使用IoC容器,那么你就不需要第一个构造函数。然后使用IoC工具注入打印机类。
0
您可以随时暂停打印机进行打印。
您可以使用写入文件的打印机设备。
而且您可以编写自己的打印设备。
0
另一种解决方案是自己编写一个LPD应用程序或者只是监视端口9100,并让Windows打印队列通过9100或515(LPD)将数据路由到“自己”。
相关问题
- 1. 如何:模拟(IPP)打印机
- 2. 模拟SWT打印机
- 3. 如何在.NET中打印到空打印机?
- 4. 在打印机模拟python程序中如何计算waittime?
- 5. 如何使用不带打印机的默认打印机(VB Net)打印PDF
- 6. 在模拟器上打印
- 7. 如何使用.NET安装打印机?
- 8. 打印慢(模拟打字)
- 9. 在.Net中选择打印机
- 10. 在ios中打印:如果打印机连接到mac,是否可以从模拟器打印?
- 11. 如何从.NET Compact Framework打印到MZ220打印机?
- 12. iOS 4:我如何模拟A4打印机?
- 13. .NET XML漂亮打印机?
- 14. 如何在.net中设置打印机ACL?
- 15. 如何在SELECTED打印机中打印任何文档
- 16. 打印到xcode模拟器
- 17. 打印在.NET
- 18. .net中的网络打印机监控
- 19. .NET飞机模拟器
- 20. .net使用模板打印
- 21. 如何将MemoryStream中的PDF发送到.Net中的打印机?
- 22. 如何在.NET Compact Framework中模拟ErrorProvider?
- 23. 如何在Java中打印收据打印机的支票?
- 24. 如何在Qt5中打印PDF到打印机
- 25. 如何在Qt中打印文本文件到打印机?
- 26. 如何在c#中打印字符串到打印机?
- 27. 如何从.NET打印到串行打印机(例如Epson TM-U210)?
- 28. 在ZEBRA标签打印机中打印
- 29. 模拟框架(在.Net中)如何创建模拟对象?
- 30. 如何在打印机上打印背景图像水印
我就是这样做的+1 +1 – 2009-06-19 17:37:28