我想循环遍历 XmlNodeList。如何在 Moq 中模拟 XmlNodeList,以便可以像在 foreach 循环中一样循环遍历它:
foreach (XmlNode xmlNode in nodes)
{
//Do something with node
}
我尝试通过
SetupSequence
方法进行设置,但我无法创建所需的模拟。
foreach
在底层调用 GetEnumerator
,这就是你需要模拟的:
var xmlNodesMock = new Mock<XmlNodeList>();
xmlNodesMock
.Setup(l => l.GetEnumerator())
.Returns(new XmlNode[] { /* values go here */ }.GetEnumerator());
当然,您需要使用实际值在
XmlNode
方法中初始化 Returns
数组。请记住,模拟列表必须可注入到测试方法中,以便您可以替换实际实现。