2009-06-19 7 views

答えて

12

あなたがしようとしていることが完全には不明ですが、これが役立つ可能性があります。

プリンタ(または他の外部デバイス)をモックするには、プリンタのすべての呼び出しをインターフェイスの背後にカプセル化する必要があります。

interface IPrinter 
{ 
    void Print(PrintData data); 
} 

他のすべてのコードは、このインターフェイスを使用してプリンタと通信する必要があります。

それからなど

をテストするときに、偽のオブジェクトを簡単にRhino Mocksのようなモックフレームワークを使用して嘲笑することができ、実際のプリンタに話して、このインターフェイスの1つのバージョンを実装し、使用することができます1つの、偽のオブジェクトことができますかMoq、または自分で実装するだけでも構いません。

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

更新:あなたはIoCコンテナを使用している場合、あなたは必要としない、ところで

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ツールを使用してプリンタクラスを注入します。

+1

これは私がそれを行う方法です+1 –

0

いつでも印刷用にプリンタを一時停止することができます。

ファイルに書き込むプリンタデバイスを使用できます。

あなた自身の印刷デバイスを書くことができます。

0

もう1つ解決策は、LPDアプリケーションを作成するか、単にポート9100を監視して、Windowsプリントキューに9100または515(LPD)で「自身」にデータをルーティングさせることです。

関連する問題