如何在VS 2013中使用Microsoft Fakes来填充XmlAttribute

时间:2015-05-25 07:23:35

标签: c# unit-testing microsoft-fakes

我正在测试以下代码。

    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);
            }
        }
    }

是否可以填充属性/ attributecollection以便我可以返回我想要返回的属性对象?

例如,我想返回两个xmlattribute对象,其中一个属性名称为" name"另一个作为"类型"以及他们各自的价值观。

我的意思是类似于shim语句,而不是返回null,我可以返回一个带有名称和值的xmlattribute对象吗?

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

以下是我的样本xml。

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

1 个答案:

答案 0 :(得分:0)

你可以:

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;
};