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

Respuestas a la pregunta(2)

Su respuesta a la pregunta