Ben*_*tBe 12
不完全确定你想要做什么,但这可能会有所帮助.
为了模拟打印机(或任何其他外部设备),您应该将所有对打印机的调用封装在接口后面,例如
interface IPrinter
{
void Print(PrintData data);
}
Run Code Online (Sandbox Code Playgroud)
然后,所有其他代码必须通过此界面与打印机通信.
然后,您可以实现与真实打印机对话的此接口的一个版本,以及在测试时可以使用的一个假对象.
使用像Rhino Mocks或Moq这样的模拟框架可以很容易地模拟假对象,或者你可以自己实现伪造的对象.
public class FakePrinter : IPrinter
{
public void Print(PrintData data)
{
// Write to output window or something
}
}
Run Code Online (Sandbox Code Playgroud)
更新:
所有使用打印机的类将看起来像这样:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果您使用IoC容器,那么您不需要第一个构造函数.然后使用IoC工具注入打印机类.
| 归档时间: |
|
| 查看次数: |
608 次 |
| 最近记录: |