【发布时间】:2013-09-13 08:47:10
【问题描述】:
假设我们有以下类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 的Init() 的所有调用,所以我们想写如下内容:
m_mockRepository_p->ExpectCall(b_p, A::Init);
最后一个期望会导致一个未处理的异常,我认为这是可以的,因为我们正在将我们正在调用的方法与我们想要期望的基本版本混合在一起。将 b_p 转换为 A 没有帮助。
是否有针对该特定用例的解决方案?
【问题讨论】:
标签: c++ unit-testing mocking hippomocks