Chi*_*era 8 testing automated-tests unit-testing gmock
我是第一次使用Google Mock(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());
};
Run Code Online (Sandbox Code Playgroud)
MockLinkSignals mock_signals;
当我执行一些导致EXPECT_CALL(mock_signals, onLink(_))
运行的测试代码时,我如何检查参数onLink()
?
pti*_*awr 17
您通常会使用现有的gmock匹配器或定义自己的匹配器来检查传递给mock方法的参数.
例如,使用默认的Eq等于匹配器:
EXPECT_CALL(mock_signals, onLink("value_I_expect"))
Run Code Online (Sandbox Code Playgroud)
或检查子字符串说:
EXPECT_CALL(mock_signals, onLink(HasSubstr("contains_this")))
Run Code Online (Sandbox Code Playgroud)
gmock文档提供了可用的标准匹配器的详细信息,还介绍了如何创建自定义匹配器,例如整数参数类型:
MATCHER(IsEven, "") { return (arg % 2) == 0; }
Run Code Online (Sandbox Code Playgroud)
可以通过将操作附加到期望来捕获变量的参数,尽管这可能在期望的范围内使用有限:
EXPECT_CALL(mock_signals, onLink(_)).WillOnce(SaveArg<0>(pointer))
Run Code Online (Sandbox Code Playgroud)
在为您的特定情况选择最佳方法之前,我建议您研究各种匹配器和操作.
归档时间: |
|
查看次数: |
11799 次 |
最近记录: |