Это не совсем специфично для Moq, а скорее является общим вопросом о Mocking framework.Я создал фиктивный объект для объекта типа "IAsset".Я хотел бы посмеяться над типом, возвращаемым из метода получения IAsset, "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());
Проблема, с которой я сталкиваюсь - это Mocking этого возвращенного значения свойства.
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 не является виртуальным.Что имеет смысл.
Должен ли я просто вручную написать макет, который является производным от SerializableNodeTree, или это способ издеваться над этим объектом?