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

标签 c++ googlemock

给定一些至少接受一个参数的模拟函数:

MOCK_METHOD1(fun, void(int p));

根据参数 p 的值,我如何EXPECT_CALL 两个相同的调用?我不关心 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 );

关于c++ - 验证参数对于 gmock 中的多个预期调用具有相同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43607922/

相关文章:

c++ - 期待来自另一个线程的 googlemock 调用

c++ - GoogleMock 和 QString 参数

c++ - 带有数百万个项目的 QListView 使用键盘缓慢

c++ - 如何在同一个程序中同时使用 C++/TCL 和 C++/TK?

c++ - 如何检查指针指向 iOS 上的堆或堆栈内存?

c++ - Googletest:如何异步运行测试?

c++ - GoogleTest 如何将 InvokeArgument 与 WithArg 一起使用

c++ - 如何解决 gmock EXPECT_CALL 失败,当变量传递给函数时无关紧要

c++ - Eclipse CDT 和 PGI (Portland) C++ 编译器

c++ - 为什么在 gcc 库中重复声明相同的类型