如何在 VS 2013 中使用 Microsoft Fakes 填充 XmlAttribute
How to shim XmlAttribute using Microsoft Fakes in VS 2013
我正在测试以下代码。
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);
}
}
}
是否可以填充 attribute/attributecollection 以便我可以 return 无论我想要 return 哪个属性对象?
例如,我想 return 两个 xml 属性对象,一个属性名称为 "name",另一个属性名称为 "type" 以及它们各自的值。
我的意思是类似于下面的 shim 语句,我可以 return 一个具有名称和值的 xml 属性对象而不是 returning null 吗?
ShimXmlAttributeCollection.AllInstances.ItemOfGetInt32 = (x, y) =>
{
return null;
};
这是我的样本 xml。
<add name=\"console\" type=\"DefaultTraceLoader\" value=\"Error\"/>
你可以:
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;
};
我正在测试以下代码。
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);
}
}
}
是否可以填充 attribute/attributecollection 以便我可以 return 无论我想要 return 哪个属性对象?
例如,我想 return 两个 xml 属性对象,一个属性名称为 "name",另一个属性名称为 "type" 以及它们各自的值。
我的意思是类似于下面的 shim 语句,我可以 return 一个具有名称和值的 xml 属性对象而不是 returning null 吗?
ShimXmlAttributeCollection.AllInstances.ItemOfGetInt32 = (x, y) =>
{
return null;
};
这是我的样本 xml。
<add name=\"console\" type=\"DefaultTraceLoader\" value=\"Error\"/>
你可以:
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;
};