前文中,我们定义了一个Mock类,
class MockInterfaceImpl : public SomeInterface {
public:
MOCK_METHOD1(some_func, bool(std::string & param));
};
然后创造一个Mock对象,
MockInterfaceImpl mock_if_impl;
接下来,我们用EXPECT_CALL来定义Mock对象的行为,
EXPECT_CALL(mock_if_impl, some_func)
.Times(::testing::AtLeast(1))
.WillOnce(::testing::Return(true));
EXPECT_CALL
是有点难理解的,接下来,我们详细说一说。
语法定义
EXPECT_CALL(mock_object, method(matcher))
.Times(cardinality)
.WillOnce(action)
.WillRepeatedly(action);
- 第一行中
(matcher)
是可有可无的,只有存在函数同名重载的情况下,(matcher)
才是必须的,用于匹配入参格式。 - 第二行也是可有可无的,
cardinality
表示函数应该被调用的次数。常见的有:Times(n)
应该被调用n次;Times(::testing::AtLeast(n))
至少应该被调用n次。 - 第三行和第四行,表示做一次或重复做
action
。常见的action
有::testing::Return(n)
表示返回一个数字
网友评论