Google Mock の Return() を介して、モック関数が呼び出されたときに返される値を返すことができます。ただし、特定の関数が何度も呼び出されることが予想され、そのたびに異なる定義済みの値を返すようにしたい場合。
例えば:
EXPECT_CALL(mocked_object, aCertainFunction (_,_))
.Times(200);
aCertainFunction
毎回増加する整数を返すにはどうすればよいですか?
Google Mock の Return() を介して、モック関数が呼び出されたときに返される値を返すことができます。ただし、特定の関数が何度も呼び出されることが予想され、そのたびに異なる定義済みの値を返すようにしたい場合。
例えば:
EXPECT_CALL(mocked_object, aCertainFunction (_,_))
.Times(200);
aCertainFunction
毎回増加する整数を返すにはどうすればよいですか?
使用シーケンス:
using ::testing::Sequence;
Sequence s1;
for (int i=1; i<=20; i++) {
EXPECT_CALL(mocked_object, aCertainFunction (_,_))
.InSequence(s1)
.WillOnce(Return(i));
}
here で説明されているように、ファンクターを使用します。
このようなもの :
int aCertainFunction( float, int );
struct Funct
{
Funct() : i(0){}
int mockFunc( float, int )
{
return i++;
}
int i;
};
// in the test
Funct functor;
EXPECT_CALL(mocked_object, aCertainFunction (_,_))
.WillRepeatedly( Invoke( &functor, &Funct::mockFunc ) )
.Times( 200 );