Частичное высмеивание класса с Moq

Я хочу издеваться только надGetValue метод следующего класса, использующий 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;
    }
}

Я уже читал немного, как это должно работать с Moq. Решение, которое я нашел в Интернете, заключается в использованииCallBase собственность, но это не работает для меня.

Это мой тест:

[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();
 }

Я ожидаю, что Moq использует существующую реализациюMyMethod и вызывает смоделированный метод, что приводит к следующему выводу:

ORIGINAL MyMethod: 999
MOCKED GetValue

но вот что я получаю:

ORIGINAL GetValue
ORIGINAL MyMethod: 10

а потом

Moq.MockVerificationException : The following setups were not matched: MyClass mock => mock.GetValue()

У меня было ощущение, что я что-то неправильно понял. Что мне здесь не хватает? Любая помощь будет оценена

Ответы на вопрос(2)

Ваш ответ на вопрос