在Google Mock框架中,如果你想要设置一个指针属性,使其可以调用EXPECT_CALL
的函数,你需要做几件事情:
EXPECT_CALL
宏来定义mock对象的期望行为。下面是一个简单的例子,展示了如何做到这一点:
class IService {
public:
virtual ~IService() {}
virtual void DoSomething() = 0;
};
#include "gmock/gmock.h"
class MockService : public IService {
public:
MOCK_METHOD(void, DoSomething, (), (override));
};
在你的测试类中:
class TestClass {
protected:
std::unique_ptr<IService> servicePtr;
};
在你的测试函数中:
TEST_F(TestClass, TestDoSomething) {
// 创建mock对象
servicePtr = std::make_unique<MockService>();
// 设置期望
EXPECT_CALL(*servicePtr, DoSomething())
.Times(1); // 期望DoSomething被调用一次
// 调用函数
servicePtr->DoSomething();
}
在这个例子中,TestClass
有一个servicePtr
成员,它是一个指向IService
的智能指针。在测试函数TestDoSomething
中,我们创建了一个MockService
对象,并将其地址赋给了servicePtr
。然后,我们使用EXPECT_CALL
来定义DoSomething
方法的期望行为。
当你运行这个测试时,Google Mock会检查DoSomething
是否按照你的期望被调用了。
领取专属 10元无门槛券
手把手带您无忧上云