Mocking foreach loop with Moq
c#, moq, unit-testing
Solution
The `foreach` calls `GetEnumerator` under the hood and that's what you need to mock:
var xmlNodesMock = new Mock<XmlNodeList>();
xmlNodesMock
.Setup(l => l.GetEnumerator())
.Returns(new XmlNode[] { /* values go here */ }.GetEnumerator());
Naturally you need to initialize `XmlNode` array in `Returns` method with actual values. Keep in mind that mocked list has to be injectable to the tested method, so that you can replace actual implementation.
Problem
I want to loop throug a XmlNodeList. How do you mock a XmlNodeList in Moq, so you can loop through it like in a foreach loop: ``` foreach (XmlNode xmlNode in nodes) { //Do something with node } ``` I have tried to set up via a the `SetupSequence` method, but I haven't been able to create the desired mock.