2012-10-31 3 views
5

XmlNodeListをループしたいです。どのようにあなたがそれをループがforeachループでできるようなので、あなたは、部品番号でいるXmlNodeListをあざけりん:Moockでforeachループをモックする

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

私はSetupSequenceメソッドを介して設定しようとしましたが、私が作成することができていません所望のモック。

+1

このテストで達成しようとしていることを理解するのは少し難しいですが、ユニットテストではなく統合テストを行い、XMLの文字列表現を提供し、データ。 – nieve

+0

あなたは私が本当の単体テストの価値について話し合うことができる灰色の領域にいるのは間違いありません。しかし、これは他の灰色の領域では有効ではありません。私はすべてのforeachループで同じ問題に遭遇しませんか? – Morten

+0

違いはあなたがループしていることです - xmlドキュメントは他のコレクションよりも複雑であり、正確に何を正確にテストしようとしているかによって、単純な単体テストの候補にはならないかもしれません。また、この質問はあなたのデザインを再考する良い指標かもしれません。ちょっとした考え。 – nieve

答えて

9

foreachボンネットの下に通話GetEnumerator、それはあなたがモックために必要なものです:

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

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

関連する問題