Unit testing 如何检查gmock EXPECT_调用()的参数?

Unit testing 如何检查gmock EXPECT_调用()的参数?,unit-testing,testing,automated-tests,gmock,Unit Testing,Testing,Automated Tests,Gmock,我第一次使用GoogleMock(gMock)。给定以下代码段: class LinkSignals { public: virtual ~LinkSignals() { } virtual void onLink(std::string) = 0; virtual void onUnLink() = 0; }; class MockLinkSignals : public LinkSignals { public:

我第一次使用GoogleMock(gMock)。给定以下代码段:

class LinkSignals
{
    public:
        virtual ~LinkSignals() { }

        virtual void onLink(std::string) = 0;
        virtual void onUnLink() = 0;
};


class MockLinkSignals : public LinkSignals
{
    public:
        MOCK_METHOD1(onLink, void(std::string));
        MOCK_METHOD0(onUnLink, void());
};
MockLinkSignals mock\u信号


当我执行一些导致运行
EXPECT\u调用(mock\u信号,onLink())
的测试代码时,我如何检查
onLink()
的参数?

您通常会使用现有的gmock匹配器或定义自己的匹配器来检查传递给mock方法的参数

例如,使用默认的Eq相等匹配器:

EXPECT_CALL(mock_signals, onLink("value_I_expect"))
或者检查子字符串,例如:

EXPECT_CALL(mock_signals, onLink(HasSubstr("contains_this")))
gmock文档提供了可用的标准匹配器的详细信息,并描述了如何创建自定义匹配器,例如,对于整型参数类型:

MATCHER(IsEven, "") { return (arg % 2) == 0; }
可以通过将操作附加到期望来捕获变量的参数,尽管这在期望范围内的用途有限:

EXPECT_CALL(mock_signals, onLink(_)).WillOnce(SaveArg<0>(pointer))
EXPECT_调用(mock_信号,onLink())).WillOnce(SaveArg(指针))
我建议在为您的具体案例选择最佳方法之前,先研究各种匹配器和可用的操作