C# 设置Moq以忽略虚拟方法

C# 设置Moq以忽略虚拟方法,c#,mocking,moq,C#,Mocking,Moq,我有一个抽象类,它有一个虚方法。如果以后的实现需要覆盖该功能,则该方法是虚拟的 但是,Moq代理所有虚拟方法,因此我似乎无法测试编写的实际代码,而是使用该方法的模拟设置(当前返回默认值) 示例摘要: public abstract SomeAbstract { public abstract Format(IFormatProvider provider, string format) { // does some stuff i need to test

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

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

示例摘要:

public abstract SomeAbstract
{
    public abstract Format(IFormatProvider provider, string format)
    {
          // does some stuff i need to test
    }
}
我的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
}
[测试]
公共无效应\u设置\u格式\u状态()
{
Mock Mock=新Mock();
mock.Object.Format(CultureInfo.CurrentCulture,“格式字符串”);
//进行测试以确保格式正确更改了对象的状态
}

我如何设置我的模拟对象,让我的虚拟
格式化
方法工作,而不必从方法中删除
virtual
?!在这种情况下,也许我滥用了模拟的概念。

我相信在模拟上设置“CallBase=true”会起作用。参见

有趣问题的“定制模拟行为”部分,我学到了一些东西!耶。