我有以下代码:
class MyBase
{
public virtual void foo()
{ ... }
}
class MyDerived : MyBase
{
public override void foo()
{
...
base.foo();
...
}
}
如何在不执行base.foo()方法的情况下测试MyDerived Class中的方法foo?
答案 0 :(得分:12)
(这是另一种情况,其中组合提供了比继承更多的控制 - 如果你的派生类组成基类,你可以使用模拟或其他代替。当然,它不总是合适的,但是...)
答案 1 :(得分:2)
如何重构MyDerived以获得方法DoPreFoo()和DoPostFoo()。这样就可以重写foo来调用这些函数,你可以将它们用于单元测试。然而,这感觉有点难看。我觉得如果功能需要单独测试,MyDervied需要聚合MyBase而不是派生它。
答案 2 :(得分:1)
简短的回答是:你做不到。因为你不能“嘲笑”这种依赖。
也许TypeMock Isolator有一些神奇的配置文件API技巧可以帮到这里,但我不确定。
答案 3 :(得分:1)
如果您不需要在测试中执行基本方法,那么您的设计就会出现问题。