2012-10-31 13 views
5

Chcę pętli przez XmlNodeList. Jak można drwić z XmlNodeList w Min, więc można pętli nim jak w pętli foreach:Trwa pętla foreach z Moq

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

próbowałem skonfigurować za pomocą metody SetupSequence, ale nie byli w stanie stworzyć pożądany makiety.

+1

To jest trochę trudne do zrozumienia, co próbujesz osiągnąć za pomocą tego testu, jednak możesz chcieć rozważyć wykonanie testu integracyjnego tutaj, zamiast testu jednostkowego, dostarczając łańcuchową reprezentację twojego xml i testując twoją pętlę na rzeczywistym dane. – nieve

+0

Masz rację, że jestem w tej szarej strefie, gdzie możesz omówić wartość prawdziwego testu jednostkowego. Może to jednak być przydatne w innych, nie tak szarej strefie. Czy nie napotkam na ten sam problem z wszystkimi pętlami foreach? – Morten

+0

Różnica polega na tym, co zapętlasz - dokument XML jest bardziej złożony niż jakakolwiek inna kolekcja, a zatem może nie być najlepszym kandydatem do prostego testu jednostkowego, oczywiście w zależności od tego, co dokładnie próbujesz dokładnie przetestować. Ponadto to pytanie może być dobrym wskaźnikiem do przemyślenia swojego projektu? Tylko myśl. – nieve

Odpowiedz

9

W foreach rozmowy GetEnumerator pod maską i to, co trzeba kpić:

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

Naturalnie trzeba zainicjować XmlNode tablicę w Returns metody z wartościami rzeczywistymi. Należy pamiętać, że wyszydzona lista musi być wstrzykiwana do testowanej metody, aby można było zastąpić aktualną implementację.