【发布时间】:2010-03-04 00:01:49
【问题描述】:
我有一个具有虚方法的抽象类。如果以后的实现需要覆盖该功能,则该方法是虚拟的。
但是,Moq 代理了所有虚拟方法,因此我似乎无法测试编写的实际代码,而是使用该方法的 Mock 设置(当前返回默认值)。
示例摘要:
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
}
如何设置我的 Mock 对象以让我的虚拟 Format 方法工作,而不必从方法中删除 virtual?!也许我在这种情况下滥用了嘲笑的概念。
【问题讨论】:
-
有趣的问题,我学到了一些东西!耶。