我想嘲笑只GetValue
以下类的方法,使用起订量:
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;
}
}
我已经读了一下这个应该怎么用起订量工作。 我在网上找到的解决方案是使用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();
}
我预计起订量使用现有实施MyMethod
并调用模拟的方法,导致下面的输出:
ORIGINAL MyMethod: 999
MOCKED GetValue
但是这就是我得到:
ORIGINAL GetValue
ORIGINAL MyMethod: 10
然后
Moq.MockVerificationException : The following setups were not matched: MyClass mock => mock.GetValue()
我的感觉,我完全误解的东西。 我缺少的是在这里吗? 任何帮助,将不胜感激