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