从我的测试中使用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返回的节点是预期的。
为什么会这样?
答案 0 :(得分:0)
假货有两种类型的假货。存根和垫片。
您正在使用最后一个垫片。它会覆盖对XmlNode类的所有调用'在运行时选择SelectSingleNode方法。
通常,对于其他部分,您使用存根,因为它们只是一个调用委托而不是基本方法的实例。但是,这仅在事物是虚拟的情况下才有效。
在您的情况下,您可能应该填充ParentNode获取的所有实例。