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

C++ 验证参数对于gmock中的多个预期调用具有相同的值,c++,gmock,C++,Gmock,给定一些至少包含一个参数的模拟函数: MOCK_METHOD1(fun, void(int p)); 就参数p的值而言,我如何能期望\u调用两个相同的调用?我不在乎p的实际值是多少,只要对函数fun的两个调用都相同。我无法预测测试用例中p的值。选项#1 选项2 int p=0; 测试:顺序顺序顺序; 期待你的电话(模拟,有趣() .插入顺序(seq) .WillOnce(测试::SaveArg(&p)); EXPECT_调用(mock,fun(测试::Eq(测试::ByRef(p))) .次(

给定一些至少包含一个参数的模拟函数:

MOCK_METHOD1(fun, void(int p));
就参数
p
的值而言,我如何能期望\u调用两个相同的调用?我不在乎
p
的实际值是多少,只要对函数
fun
的两个调用都相同。我无法预测测试用例中
p
的值。

选项#1 选项2
int p=0;
测试:顺序顺序顺序;
期待你的电话(模拟,有趣()
.插入顺序(seq)
.WillOnce(测试::SaveArg<0>(&p));
EXPECT_调用(mock,fun(测试::Eq(测试::ByRef(p)))
.次(1)
.顺序(seq);
EXPECT_CALL( mock, fun( testing::Truly( []( int p ) {
                 static int initial = p;
                 return initial == p;
             } ) ) )
    .Times( 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 );