5

私がこのようなものを持っている場合:

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

メソッドが正しい xml を生成することを確認する単体テストを作成する方法を教えてください。メソッド呼び出しに追加のパラメーターを追加せずに、XDocument (私は Moq を使用しています) をモックするにはどうすればよいですか?

4

1 に答える 1

6

からかおうとしないでくださいXDocument。ここではそれは問題ではありません。面倒なのはファイル システムへのアクセスです。代わりに a を渡してStream、マニフェストを書き込むことができます。

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

次に、それを でテストできますが、実際にはマニフェスト パスにMemoryStreama を使用します。FileStreamこのメソッドを内部 ([InternalsVisibleTo]テストから引き続きアクセスできるように使用) にし、次の行に沿ってパラメーターなしのパブリック オーバーロードを作成することもできます。

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

その後、そのコードはテストしませんが、実際のロジックはすべてテストできます。

于 2012-04-19T19:29:21.297 に答える