2009-06-19 35 views

Respuesta

12

No estoy del todo seguro de lo que está tratando de hacer, pero esto podría ayudar.

Para simular una impresora (o cualquier otro dispositivo externo), debe encapsular todas las llamadas a la impresora detrás de una interfaz, p.

interface IPrinter 
{ 
    void Print(PrintData data); 
} 

Toda su otro código continuación, debe hablar con la impresora a través de esta interfaz.

A continuación, puede aplicar una versión de esta interfaz que se comunica con la impresora real, y un objeto falso que se puede utilizar cuando se prueba etc.

El objeto falso puede ser fácilmente burlado de utilizar un marco de burla como Rhino Mocks o Moq, o simplemente puede implementar uno falso.

public class FakePrinter : IPrinter 
{ 
    public void Print(PrintData data) 
    { 
     // Write to output window or something 
    } 
} 

Actualización:

Todas las clases que utiliza la impresora luego ser algo como esto:

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) 
    } 
} 

Por cierto, si utiliza un contenedor IoC entonces no es necesario el primer constructor A continuación, inyecta las clases de impresora con la herramienta IoC.

+1

Así es como lo haría +1 –

0

Siempre puede pausar la impresora para imprimir.

Puede usar un dispositivo de impresora que escriba en un archivo.

Y puede escribir su propio dispositivo de impresión.

0

Otra solución es escribir usted mismo una aplicación LPD o simplemente monitorear el puerto 9100 y tener una cola de impresión de Windows enrutar los datos a "sí mismo" sobre 9100 o 515 (LPD).

Cuestiones relacionadas