【发布时间】:2011-07-28 21:34:25
【问题描述】:
这并不是真正特定于 Moq,而是更多的一般 Mocking 框架问题。我为“IAsset”类型的对象创建了一个模拟对象。我想模拟从 IAsset 的 getter “Info”返回的类型。
var mock = new Mock<IAsset>();
mock.SetupGet(i => i.Info).Returns(//want to pass back a mocked abstract);
mock.SetupProperty(g => g.Id, Guid.NewGuid());
我遇到的问题是模拟这个返回的属性值。
mock.SetupGet(i => i.Info).Returns(//this is the type I need to mock);
该属性包含一个抽象类型。这种类型扩展了 XDocument。
public abstract class SerializableNodeTree : XDocument, ISerializable{...}
所以..我想做的是:
var nodeTreeMock = new Mock<SerializableNodeTree>();
nodeTreeMock .SetupGet(d => d.Document).Returns(xdoc);
xdoc 是一个 XDocument 实例。这将不起作用,因为 XDocument.Document getter 不是虚拟的。这是有道理的。
我应该手动编写一个派生自 SerializableNodeTree 的模拟,还是有办法模拟这个对象?
【问题讨论】:
标签: c# unit-testing mocking moq