如何在Google模拟中模拟常量?

时间:2016-12-12 08:55:28

标签: c++ unit-testing googlemock gmock

Variable.h
....
#define BLAH = "blahstring"
.....

您好, 我们如何在#define下模拟变量?谷歌模拟docs主要谈论方法和对象,但不是模拟常量。最近我可以想到委托调用假类让它返回测试值。

我有变量列表的头文件,我想模仿它,以便在测试中调用BLAH时,我得到" mockblahstring"而不是" blahstring"。

任何示例代码都会有所帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

#define不是常量

这是(有关详细信息,请参阅here)。在任何gmock库获得“其手指”之前,编译器就会启动并替换所有出现的

换句话说:您的编译对象不包含任何BLAH“对象”。它只包含你写下BLAH的所有地方的相应字符串。

从这个意义上说:没有办法嘲笑那些根本不再存在的“实体”。

这里真正的答案:这是你绝对不应该使用预处理器宏作为“常量”的众多原因之一。因为,它们不是常数!仍有一些地方有意义,但绝对不能替代常数

从这个意义上说:在做其他事情之前,你最好先退后一步,了解这些基本要素。