C# 设置Moq以忽略虚拟方法
我有一个抽象类,它有一个虚方法。如果以后的实现需要覆盖该功能,则该方法是虚拟的 但是,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
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”会起作用。参见有趣问题的“定制模拟行为”部分,我学到了一些东西!耶。