私はモックメソッドを持っています。それが呼び出されると、通常の動作を呼び出す前に別の関数を呼び出すようにしたいと思います。ような何か:Google C++ Mocking Framework(Google Mock)(V1.5)
EXPECT_CALL(*my_obj, MockedMethod(_,_,_,_,_,_))
.WillOnce(DoAll(
Invoke(my_obj, &SomeAdditionalMethodIWantToCall),
Invoke(my_obj, &DefaultBehavior),
));
唯一の問題は、SomeAdditionalMethodIWantToCall
が全くMockedMethod
に提供するものに関連していないパラメータを期待していることです。私はそれらを与えることができるようにしたいが、私は構文に苦しんでいる。
EXPECT_CALL(*my_obj, MockedMethod(_,_,_,_,_,_))
.WillOnce(DoAll(
Invoke(my_obj, &SomeAdditionalMethodIWantToCall, arg1, arg2, arg3),
Invoke(my_obj, &DefaultBehavior),
));
私はドキュメントでそのようなことを何も成功していないと思っています。 Using a Function or a Functor as an Actionで
は、我々は持っている:
Invoke(f)
、Invoke(object_pointer, &class::method)
、InvokeWithoutArgs(f)
、ちょうど前方(またはしない)嘲笑機能を提供パラメータは、それが呼び出されますInvokeWithoutArgs(object_pointer, &class::method)
。InvokeArgument<N>(arg1, arg2, ..., argk)
はパラメータの1つを呼び出すためのようです。 Composite ActionsWithArg<N>(a)
とWithArgs<N1, N2, ..., Nk>(a)
で
転送取得元の関数からどのパラメータを選択するのであるように見えます。
私はかなり明白なものを紛失していると思いますが、私はここに少しばかりいるので、どんな提案も役に立ちます。
'InvokeUnrelatedFunction'アクションでは、' arg1'がアクションを呼び出そうとしているところで宣言されていないというコンパイラエラーが発生します。何が原因だろうか? – Martin
@Martin質問で述べたように、 'arg1'は' 'MockedMethod'に提供されたものとまったく関係のないパラメータです。" 'MockedMethod'の引数を関数に渡したいのであれば、' Invoke'だけ使うことができます。また、 'Invoke'と' WithArgs'を組み合わせることもできます。例については、Google Mock Cookbookを参照してください。 –