验证参数对于 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 );
给定一些至少需要一个参数的模拟函数:
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 );