6

我想循环通过一个 XmlNodeList。如何在 Moq 中模拟 XmlNodeList,以便可以像在 foreach 循环中一样循环遍历它:

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

我试图通过SetupSequence方法进行设置,但我无法创建所需的模拟。

4

1 回答 1

10

引擎盖下的foreach调用GetEnumerator,这就是你需要模拟的:

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

自然,您需要使用实际值XmlNode在方法中初始化数组。Returns请记住,模拟列表必须可注入测试方法,以便您可以替换实际实现。

于 2012-10-31T18:37:38.700 回答