5

Google Mock の Return() を介して、モック関数が呼び出されたときに返される値を返すことができます。ただし、特定の関数が何度も呼び出されることが予想され、そのたびに異なる定義済みの値を返すようにしたい場合。

例えば:

EXPECT_CALL(mocked_object, aCertainFunction (_,_))
    .Times(200);

aCertainFunction毎回増加する整数を返すにはどうすればよいですか?

4

3 に答える 3

8

使用シーケンス:

using ::testing::Sequence;

Sequence s1;
for (int i=1; i<=20; i++) {
    EXPECT_CALL(mocked_object, aCertainFunction (_,_))
        .InSequence(s1)
        .WillOnce(Return(i));
}
于 2011-02-28T16:59:18.857 に答える
3

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 );
于 2011-02-28T17:05:11.697 に答える