验证参数对于gmock中的多个预期调用具有相同的值

时间:2017-04-25 10:18:35

标签: c++ gmock

给出一些至少需要一个参数的模拟函数:

MOCK_METHOD1(fun, void(int p));

我如何根据参数EXPECT_CALL的值p进行两次相同的调用?我并不关心p的实际值是什么,只要它对函数fun的两次调用都是一样的。我无法在测试用例中预测p的值。

1 个答案:

答案 0 :(得分:1)

选项#1

EXPECT_CALL( mock, fun( testing::Truly( []( int p ) {
                 static int initial = p;
                 return initial == p;
             } ) ) )
    .Times( 2 );

选项#2

int p = 0;
testing::Sequence seq;
EXPECT_CALL( mock, fun( _ ) )
    .InSequence( seq )
    .WillOnce( testing::SaveArg< 0 >( &p ) );
EXPECT_CALL( mock, fun( testing::Eq( testing::ByRef( p ) ) ) )
    .Times( 1 )
    .InSequence( seq );