以下是一个示例:假设有一个名为MockClass的类,其中有一个名为Method的方法:cppclass MockClass {public: MOCK_METHOD1(Method,int(int));};我们可以使用Invoke函数来为Method方法添加自定义的动作。假设我们想在Method方法被调用时返回调用参数的平方,可以这样写:cppMockClass mockObj;EXPECT_CALL(mockObj, Method...
EXPECT_CALL(...).WillRepeatedly(Invoke(some_method)),表达式继续执行,后续的WillRepeatedly会操作返回的internal::TypedExpectation<F>&,记录需要执行的action,以及标记这个action是可以重复执行的。 // Implements an expectation for the given function type.template<typenameR,typename...Args>classTypedExpectation<...
回复有点晚,但是您想要的可以使用DoAll、SaveArg、Invoke和Return的组合来完成。
TEST(MockTestSuite, MockTestCase)定义了一个测试用例,属于测试套件MockTestSuite。 使用EXPECT_CALL宏设置期望的函数调用。在这里,期望mock.Foo(5)被调用一次,并返回10。 使用ASSERT_EQ宏断言mock.Foo(5)的返回值是否等于10。 CMake配置示例 cmake_minimum_required(VERSION 3.14) project(UnitTestProj) # 设置 ...
EXPECT_CALL(*pManager, updateAccount(testing::_)).WillRepeatedly( testing::Invoke(&helper, &AccountHelper::updateAccount)); AccountService as; // inject the MockAccountManager object into AccountService as.setAccountManager(pManager); // operate AccountService ...
EXPECT_CALL(oMock, QueryXXX(_, _)). WillOnce(DoAll(SetArgReferee<1>(oRsp), Return(someObj))); … 还可以通过Invoke行为,将负责的测试行为添加进来。 总结 用了Gtest&Gmock框架一段时间了,发现使用之他们之后,的确可以提升代码质量,并且加快bug定位,从某个侧面来说,提高的编码效率。现在,不论用什么...
EXPECT_CALL(oMock, QueryXXX(_, _)). WillOnce(DoAll(SetArgReferee<1>(oRsp), Return(someObj))); … 还可以通过Invoke行为,将负责的测试行为添加进来。 总结 用了Gtest&Gmock框架一段时间了,发现使用之他们之后,的确可以提升代码质量,并且加快bug定位,从某个侧面来说,提高的编码效率。现在,不论用什么...
使用Invoke宏:可以使用Invoke宏来调用一个自定义的函数或函数对象,以模拟void函数的行为。在EXPECT_CALL中使用Invoke宏来调用自定义函数或函数对象。 示例代码: 代码语言:txt 复制 void DoSomething() { // 执行一些操作 } EXPECT_CALL(mockObject, voidFunction()) .WillOnce(Invoke(DoSomething)); 使用InvokeWitho...
EXPECT_CALL(async, scan(_,_,_,_)) .Times(AtLeast(1)) .WillRepeatedly(Invoke(callback_func_async)); ASSERT_TRUE(OB_SUCCESS == async.scan(a, b, c ,d)); 1. 2. 3. 4. 5. 而下面这种是错误的,调用scan的时候会发现定义了scan的mock,但没有指定探测到scan后的行为: ...
MockAccountManager* pManager =newMockAccountManager();//specify the behavior of MockAccountManager//always invoke AccountHelper::findAccountForUser//when AccountManager::findAccountForUser is invokedEXPECT_CALL(*pManager, findAccountForUser(testing::_)).WillRepeatedly( ...