Variable.h
....
#define BLAH = "blahstring"
.....
您好, 我们如何在#define下模拟变量?谷歌模拟docs主要谈论方法和对象,但不是模拟常量。最近我可以想到委托调用假类让它返回测试值。
我有变量列表的头文件,我想模仿它,以便在测试中调用BLAH时,我得到" mockblahstring"而不是" blahstring"。
任何示例代码都会有所帮助。
感谢。
答案 0 :(得分:1)
#define不是常量。
这是宏(有关详细信息,请参阅here)。在任何gmock库获得“其手指”之前,编译器就会启动并替换所有出现的宏。
换句话说:您的编译对象不包含任何BLAH“对象”。它只包含你写下BLAH的所有地方的相应字符串。
从这个意义上说:没有办法嘲笑那些根本不再存在的“实体”。
这里真正的答案:这是你绝对不应该使用预处理器宏作为“常量”的众多原因之一。因为,它们不是常数!仍有一些地方有意义,但绝对不能替代常数。
从这个意义上说:在做其他事情之前,你最好先退后一步,了解这些基本要素。