Gmock:返回无效值
Gmock: returning an invalid value
函数返回值在使用枚举类时的奇怪行为,在此之前,使用了int并且测试成功通过。
enum class rvalue
{
ok = 0,
bad = 1,
other = 2,
};
class Speeder
{
public slots:
rvalue Run(int speed)
{
if (speed < 0)
return rvalue::bad;
else if (speed > 1000)
return rvalue::bad;
else if (speed > 1)
return rvalue::other;
return rvalue::ok;
}
};
class MockSpeeder : public Speeder
{
public:
MOCK_METHOD1(Run, rvalue(int speed));
};
TEST(Mytest, RunTest)
{
MockSpeeder mspeeder;
Speeder speeder;
EXPECT_CALL(mspeeder, Run(testing::_))
.Times(1);
auto a = mspeeder.Run(100); // The result is rvalue::ok. Why?
auto b = speeder.Run(100); // Result is rvalue::other.
EXPECT_TRUE(a == b);
}
结果,一个名为 a 的变量等于 rvalue::ok,尽管代码表明这样的结果显然是不可能的。
除非另有说明,否则 mock 将返回默认值。
它不调用基类实现。
相关文章:
- 为什么将值返回函数传递给重载=运算符对运算符函数有效,而对其他运算符无效
- 枚举进程模块在有效句柄上返回无效句柄
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- FFMPEG:sws_scale返回错误:切片参数 0, 2160 无效
- 自动返回类型匹配无效
- Gmock:返回无效值
- 具有引用返回类型的重写方法上的协变返回类型无效
- cppcheck 抱怨危险地使用 c_str(). c_str() 返回的值在此调用后无效
- cpp 检查抱怨危险使用 c_str(). c_str() 返回的值在本次调用后无效,如何解决?
- 对"无效的抽象返回类型"进行故障排除
- C++ 安全数组在从 c# COM dll 返回时具有无效数据
- 访问冲突投射到无效*并返回
- 将uint64_t转换为无效*并返回
- 返回对象时从'const DList<int>* const'到 'DList<int>*' [-fallowive] 的转换无效
- 从模板函数返回默认构造或无效
- get 函数返回无效值
- 错误:二进制表达式('float' 和 'float')返回的无效操作数 (x & (1 << 31)) == 0
- 发布信号量返回错误 6(无效句柄)
- 获取控制权到达非无效函数警告的末尾,尽管我在 th 函数中有返回语句
- 无效 ** 等同于无效 * 返回