Shim XmlNode父节点返回null而不是预期的shim结果

时间:2014-05-14 16:02:20

标签: microsoft-fakes

从我的测试中使用Shims:

var testParentNode = new ShimXmlNode(xNode);
var singleNode = new ShimXmlNode(xDoc);
singleNode.ParentNodeGet = () => testParentNode;
ShimXmlNode.AllInstances.SelectSingleNodeString = (instance, x) => singleNode

我希望在调用Code之后的代码时:

XmlNode node = xmlDoc.SelectSingleNode("blah...");
var parentNode = node.ParentNode;

parentNode将等于testParentNode,但它是null。然而,从SelectSingleNode返回的节点是预期的。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

假货有两种类型的假货。存根和垫片。

您正在使用最后一个垫片。它会覆盖对XmlNode类的所有调用'在运行时选择SelectSingleNode方法。

通常,对于其他部分,您使用存根,因为它们只是一个调用委托而不是基本方法的实例。但是,这仅在事物是虚拟的情况下才有效。

在您的情况下,您可能应该填充ParentNode获取的所有实例。