假设我们有以下类A
和B
:
class A
{
virtual void Init() { DoSomething(); }
};
class B : public A
{
virtual void Init() { DoSomethingSpecial(); A::Init(); }
};
在我们的单元测试中,我们只想测试B
,即使用Hippomocks进行测试,调用B::Init()
实际上会调用DoSomethingSpecial()
:
B* b_p = new B();
m_mockRepository_p->ExpectCall(b_p, DoSomethingSpecial);
b_p->Init();
现在我们不想期待所有来自A
's 的调用,Init()
所以我们想编写如下内容:
m_mockRepository_p->ExpectCall(b_p, A::Init);
最后一个期望会导致一个未处理的异常,我认为这是可以的,因为我们正在将我们正在调用的方法与我们想要期望的基本版本混合在一起。投射b_p
到 anA
没有帮助。
该特定用例有什么解决方案吗?