我有一个抽象类,它有一个虚拟方法。如果以后的实现需要重写该功能,则该方法是虚拟的。
但是,moq代理所有虚拟方法,因此我似乎无法测试编写的实际代码,而是使用该方法的模拟设置(当前是返回默认值)。
示例摘要:
public abstract SomeAbstract
{
public abstract Format(IFormatProvider provider, string format)
{
// does some stuff i need to test
}
}
我的修女测试:
[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
}
如何设置模拟对象以使虚拟对象
Format
方法工作,无需移除
virtual
从方法上?!也许我在滥用这个案例中的嘲弄概念。