Burlas parciales de clase con Moq.
Quiero burlarme solo de laGetValue
Método de la siguiente clase, utilizando Moq:
public class MyClass
{
public virtual void MyMethod()
{
int value = GetValue();
Console.WriteLine("ORIGINAL MyMethod: " + value);
}
internal virtual int GetValue()
{
Console.WriteLine("ORIGINAL GetValue");
return 10;
}
}
Ya leí un poco cómo debería funcionar esto con Moq. La solución que encontré en línea es usar elCallBase
propiedad, pero eso no funciona para mí.
Esta es mi prueba:
[Test]
public void TestMyClass()
{
var my = new Mock<MyClass> { CallBase = true };
my.Setup(mock => mock.GetValue()).Callback(() => Console.WriteLine("MOCKED GetValue")).Returns(999);
my.Object.MyMethod();
my.VerifyAll();
}
Espero que Moq use la implementación existente deMyMethod
y llama al método simulado, lo que resulta en el siguiente resultado:
ORIGINAL MyMethod: 999
MOCKED GetValue
pero eso es lo que obtengo:
ORIGINAL GetValue
ORIGINAL MyMethod: 10
y entonces
Moq.MockVerificationException : The following setups were not matched: MyClass mock => mock.GetValue()
Me dio la sensación de que malinterpreté algo por completo. ¿Que me estoy perdiendo aqui? Cualquier ayuda sería apreciada