6

XmlNodeList をループ処理したい。Moq で XmlNodeList をモックして、foreach ループのようにループできるようにするにはどうすればよいですか。

        foreach (XmlNode xmlNode in nodes)
        {
            //Do something with node
        }

メソッドでセットアップしようとしましたSetupSequenceが、目的のモックを作成できませんでした。

4

1 に答える 1

10

内部のforeach呼び出しGetEnumeratorとそれはあなたがモックする必要があるものです:

var xmlNodesMock = new Mock<XmlNodeList>();
xmlNodesList
    .Setup(l => l.GetEnumerator())
    .Returns(new XmlNode[] { /* values go here */ }.GetEnumerator());

XmlNode当然、メソッド内の配列Returnsを実際の値で初期化する必要があります。実際の実装を置き換えることができるように、モックリストはテストされたメソッドに注入可能である必要があることに注意してください。

于 2012-10-31T18:37:38.700 に答える