美文网首页
Gtest和Gmock使用指南 (8) - EXPECT_CAL

Gtest和Gmock使用指南 (8) - EXPECT_CAL

作者: louyang | 来源:发表于2021-01-04 11:04 被阅读0次

前文中,我们定义了一个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) 表示返回一个数字

相关文章

网友评论

      本文标题:Gtest和Gmock使用指南 (8) - EXPECT_CAL

      本文链接:https://www.haomeiwen.com/subject/nfrynktx.html