2012-04-19 11 views
5

であなたのモックオブジェクトの操作を行います。はどのように静的メソッド

static class ManifestGenerator 
{ 
    public static void GenerateManifestFile(){ 
    var doc = new XDocument(); 
    ... 
    ... xml stuff added to doc 
    ... 
    doc.Save(manifestFilePath) 
} 

を今、あなたはどのように私はこの方法が正しいXMLを生成していることを確認しますユニットテストを作成することができます教えてくださいできますか? メソッド呼び出しに追加のパラメータを追加せずに、私はMoDを使っています。

答えて

6

XDocumentをモックしようとしないでください。これは問題ではありません。ファイルシステムへのアクセスは迷惑です。あなたは代わりにマニフェストを書くためにStreamに渡すことができます。

public static void GenerateManifestFile(Stream output) { 
    var doc = new XDocument(); 
    ... 
    ... xml stuff added to doc 
    ... 
    doc.Save(output); 
} 

次にあなたがMemoryStreamとのことをテストし、実際にはマニフェストのパスにFileStreamを使用することができます。あなたはその後、そのコードをテストしていませんが、あなたができる

using (Stream output = File.OpenWrite(manifestFilePath)) 
{ 
    GenerateManifestFile(output); 
} 

:あなたも(そうあなたはまだテストからアクセスでき[InternalsVisibleTo]を使用して)このメソッドは、内部にするとの線に沿って公共のパラメータなしのオーバーロード可能性がありますすべてのあなたの本当の論理をテストしてください。

+0

+1:パブリックメソッド+内部ワーカーで 'using'-partに分割するのは本当に良いヒントです。 –

関連する問題