Debe usar Moq para crear su objeto Mock y establecer la propiedad CallBase en verdadero para usar el comportamiento del objeto.
De la documentación de Moq: CallBase se define como "Invocar la implementación de la clase base si ninguna expectativa anula al miembro. Esto se llama "simulacro parcial". Permite simular cierta parte de una clase sin tener que burlarse de todo.
Código de ejemplo:
[Test]
public void FailintgTest()
{
var mock = new Moq.Mock<MyClass>();
mock.Setup(m => m.Number).Returns(4);
var testObject = mock.Object;
Assert.That(testObject.Number, Is.EqualTo(4));
Assert.That(testObject.Name, Is.EqualTo("MyClass"));
}
[Test]
public void OKTest()
{
var mock = new Moq.Mock<MyClass>();
mock.Setup(m => m.Number).Returns(4);
mock.CallBase = true;
var testObject = mock.Object;
Assert.That(testObject.Number, Is.EqualTo(4));
Assert.That(testObject.Name, Is.EqualTo("MyClass"));
}
public class MyClass
{
public virtual string Name { get { return "MyClass"; } }
public virtual int Number { get { return 2; } }
}
Información importante: desearía que hubiera más información sobre Moles. Aún no he escuchado nada sobre personas que la utilizan aquí en SO – dferraro
FWIW, aquí está el sitio oficial: http: // research. microsoft.com/en-us/projects/moles/ –
Que Moq no pueda hacer esto simplemente ya no es cierto. – MushinNoShin