设置Moq以忽略虚拟方法

Hac*_*ese 9 c# moq mocking

我有一个具有虚方法的抽象类.如果以后的实现需要覆盖该功能,则该方法是虚拟的.

但是,Moq代理所有虚拟方法,因此我似乎无法测试所编写的实际代码,而是使用该方法的Mock设置(当前返回默认值).

示例摘要:

public abstract SomeAbstract
{
    public abstract Format(IFormatProvider provider, string format)
    {
          // does some stuff i need to test
    }
}
Run Code Online (Sandbox Code Playgroud)

我的NUnit测试:

[Test]
public void Should_Set_Format_State()
{
   Mock<SomeAbstract> mock = new Mock<SomeAbstract>();
   mock.Object.Format(CultureInfo.CurrentCulture, "format string");

   // do tests to make sure Format correctly changed the object's state
}
Run Code Online (Sandbox Code Playgroud)

如何设置我的Mock对象让我的虚拟Format方法工作,而不必virtual从方法中删除?!也许我在这种情况下滥用嘲弄的概念.

Pet*_*ete 14

我相信在模拟上设置"CallBase = true"会起作用.请参阅快速入门的"自定义模拟行为"部分