如何为调用基对象中的基方法的方法编写单元测试?
本文关键字:方法 单元测试 调用 对象 | 更新日期: 2023-09-27 18:07:13
我有以下代码:
class MyBase
{
public virtual void foo()
{ ... }
}
class MyDerived : MyBase
{
public override void foo()
{
...
base.foo();
...
}
}
如何在MyDerived Class中测试方法foo而不执行base.foo()方法?
基本上不能。分别测试基类方法,这样你就对它有信心了,然后你就可以根据基类的行为测试派生类了。
(这是组合比继承提供更多控制的另一种情况—如果派生类组合了基类,则可以使用mock或其他方法代替。当然,这并不总是合适的,但是…)
如何重构MyDerived方法DoPreFoo()和DoPostFoo()。通过这种方式,foo可以被重写来调用这些函数,并且可以在单元测试中使用它们。然而,这感觉有点难看。我有一种感觉,如果功能需要单独测试,MyDervied需要聚合MyBase,而不是从中派生。
简短的回答是:你不能。因为你不能"mock away"这个依赖。
也许TypeMock Isolator有一些神奇的配置文件API技巧可以帮助这里,但我不确定。
如果您不需要在测试中执行您的基本方法,那么您的设计中一定有问题。