A次のクラスとがあるとしましょうB:
class A
{
virtual void Init() { DoSomething(); }
};
class B : public A
{
virtual void Init() { DoSomethingSpecial(); A::Init(); }
};
単体テストでは、 のみをテストします。つまり、呼び出すと実際に が呼び出されることをHippomocksBを使用してテストします。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は役に立ちません。
その特定のユースケースに対する解決策はありますか?