如何使用 Microsoft Fakes 填充 XmlDocument.load
How to shim XmlDocument.load using Microsoft Fakes
var xml = new XmlDocument();
xml.LoadXml("<add name=\"console\" type=\"DefaultTraceLoader\" value=\"Error\"/>");
string path = @"D:\Config.xml";
System.IO.Fakes.ShimFile.ExistsString = p => true;
System.Xml.Fakes.ShimXmlDocument.AllInstances.LoadString = (a,b)=>
{
a = xDoc;
b = path;
};
System.Xml.fakes:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="System.Xml" Version="4.0.0.0"/>
<ShimGeneration>
<Add FullName="System.Xml.XmlDocument!"/>
</ShimGeneration>
</Fakes>
我正在编写一个单元测试用例来填充 xml 文档加载 method.when 我调试的原始项目不是 return 在 xml 文档之上。我是否没有以正确的方式将 loadstring 函数加载到 return 主项目中预期的 xml 文档?
ShimXmlDocument.AllInstances.LoadString = (a,b)=>
{
a = xDoc;
b = path;
};
如果将“a”作为 ref 参数传递,它会按您预期的那样工作。事实并非如此,因此您不能更改它指向 lambda 函数之外的对象,即在被测方法中。
您可以通过如下修改 lambda 来实现您想要的效果:
ShimXmlDocument.AllInstances.LoadString = (a,b)=>
{
a.LoadXml("<add name=\"console\" type=\"DefaultTraceLoader\" value=\"Error\"/>");
};
var xml = new XmlDocument();
xml.LoadXml("<add name=\"console\" type=\"DefaultTraceLoader\" value=\"Error\"/>");
string path = @"D:\Config.xml";
System.IO.Fakes.ShimFile.ExistsString = p => true;
System.Xml.Fakes.ShimXmlDocument.AllInstances.LoadString = (a,b)=>
{
a = xDoc;
b = path;
};
System.Xml.fakes:
<Fakes xmlns="http://schemas.microsoft.com/fakes/2011/">
<Assembly Name="System.Xml" Version="4.0.0.0"/>
<ShimGeneration>
<Add FullName="System.Xml.XmlDocument!"/>
</ShimGeneration>
</Fakes>
我正在编写一个单元测试用例来填充 xml 文档加载 method.when 我调试的原始项目不是 return 在 xml 文档之上。我是否没有以正确的方式将 loadstring 函数加载到 return 主项目中预期的 xml 文档?
ShimXmlDocument.AllInstances.LoadString = (a,b)=>
{
a = xDoc;
b = path;
};
如果将“a”作为 ref 参数传递,它会按您预期的那样工作。事实并非如此,因此您不能更改它指向 lambda 函数之外的对象,即在被测方法中。
您可以通过如下修改 lambda 来实现您想要的效果:
ShimXmlDocument.AllInstances.LoadString = (a,b)=>
{
a.LoadXml("<add name=\"console\" type=\"DefaultTraceLoader\" value=\"Error\"/>");
};