単体テストで Google モック ライブラリを使用していますが、失敗する可能性のあるカスタム チェックを実行しようとしています。
次の例は、私がやろうとしていることを示しています:
struct Base
{
};
struct Derived : Base
{
int a;
};
struct MockClass
{
MOCK_METHOD1( Send, void ( Base & ) );
};
ここで、偽のオブジェクトが Send メソッドで Derived 型のオブジェクトと値 a を渡されたかどうかを確認したいと思います。それで、それを行う方法は?
私の考えは、Invoke を使用して、base から Derived に dynamic_cast する関数への呼び出しを転送し、値を確認することです。型が予期されていない場合は、例外をスローします。このような :
void TestCall( Base &obj )
{
Derived *realObj = dynamic_cast< Derived * >( &obj );
if ( NULL == realObj )
{
throw 123;
}
}
次に、次のようにテストします。
MockClass mockObj;
EXPECT_CALL( mockObj, Send(_) )
.WillOnce( Invoke( &TestCall ) );
これはうまくいきますか?それとももっと良い方法がありますか?