Google Mock:如何配置自定义消息以解释匹配失败

Ale*_*ban 4 c++ googlemock

如果匹配失败,Google模拟会打印如下消息:

test.cpp:112:EXPECT_CALL(mock_obj,foo(MyMatcher(bar)))...
预期arg#0:等于[1,2; 3,4]
实际:{1}
预期:被召唤一次
实际:从未被召唤 - 不满意和活跃

使用自定义匹配器MyMatcher我能够定义一个描述字符串,用于在匹配失败时生成失败消息.但它只定义了预期的arg#0部分消息.有什么方法可以自定义实际打印的方式吗?

在我的情况下,我不能重载operator << for class of bar,因为它已经由第三方代码重载不在我的控制之下(这个库定义了bar类和operator << for it).

Ale*_*ban 6

由于我无法operator <<为我定义class,谷歌测试有选项来定义PrintTo它的功能教学谷歌测试如何打印你的价值观.感谢RA的链接.

用户可以通过在定义了Foo的命名空间中定义PrintTo()的重载来为类类型Foo覆盖此行为.我们给用户提供这个选项,因为有时定义<<运营商美孚是不可取的(如编码风格可能会阻止这样做,或者已经有一个<<操作,但它不会做用户想要的东西).

void PrintTo(const Bar& value, ::std::ostream* os);
Run Code Online (Sandbox Code Playgroud)