Самый простой способ подделать тестируемые классы - использовать интерфейсы. Когда тестируемый класс реализует определенный интерфейс, вы можете просто написать макет, используя MOQ, например:
Допустим, у вас есть такой интерфейс:
private interface IMyInterface
{
string MyMethod(int value);
int MyProperty { get; set; }
}
Тогда вы можете настроить макет следующим образом:
var mockedObject = new Mock<IMyInterface>();
mockedObject.Setup(x => x.MyMethod(It.IsAny<int>())).Returns<int>(value => value.ToString());
mockedObject.SetupGet(x => x.MyProperty).Returns(42);
Вы можете получить доступ к своему максируемому объекту в модульном тесте следующим образом:
DoSomething(mockedObject.Object);