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.
The foreach
calls GetEnumerator
under the hood and that's what you need to mock:
var xmlNodesMock = new Mock<XmlNodeList>();
xmlNodesList
.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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With