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

Verify parameter has same value for multiple expected calls in gmock

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

MOCK_METHOD1(fun, void(int p));

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

选项 #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 );