如何在VS 2013中使用Microsoft Fakes填充xml属性

本文关键字:Fakes Microsoft 填充 xml 属性 VS 2013 | 更新日期: 2023-09-27 17:50:41

我要测试的代码如下:

    public Loader(XmlAttributeCollection attributes)
    {
        if (attributes == (XmlAttributeCollection)null)
            throw new ArgumentNullException("attributes");
        foreach (XmlAttribute attribute in attributes)
        {
            if (attribute.Name.Equals("name", StringComparison.OrdinalIgnoreCase))
            {
                name = attribute.Value;
            }
            else if (attribute.Name.Equals("type", StringComparison.OrdinalIgnoreCase))
            {
                loaderType = attribute.Value;
            }
            else
            {
                loaderAttributes.Add(attribute.Name, attribute.Value);
            }
        }
    }

是否可以填充属性/属性集合,以便我可以返回任何我想返回的属性对象?

例如,我想返回两个xml属性对象,一个属性名称为"name",另一个属性名称为"type",以及它们各自的值。

我的意思是像下面的shim语句,而不是返回null,我可以返回一个具有名称和值的xmlattribute对象吗?

            ShimXmlAttributeCollection.AllInstances.ItemOfGetInt32 = (x, y) =>
            {
                return null;
            };

这是我的示例xml。

<add name='"console'" type='"DefaultTraceLoader'" value='"Error'"/>

如何在VS 2013中使用Microsoft Fakes填充xml属性

你可以:

var xml = new XmlDocument();
xml.LoadXml("<add name='"console'" type='"DefaultTraceLoader'" value='"Error'"/>");
var enumerator = xml.DocumentElement.Attributes.GetEnumerator();

设置ShimXmlNamedNodeMap.AllInstances.GetEnumerator .

ShimXmlNamedNodeMap.AllInstances.GetEnumerator = x =>
{
    return enumerator;
};