c++ - Gmock:返回无效值
问题描述
使用 enum 类时函数返回值的奇怪行为,之前使用的是 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 将返回默认值。
它不调用基类实现。
推荐阅读
- xcode - 启动应用程序 NativeScript 时如何修复错误
- spring - Spring OAuth2令牌jdbc在访问oauth/token时自动抛出未经授权
- algorithm - 2个顶点之间最短路径的算法
- python - 从href标签中提取html selenium webscraper
- mysql - ProgrammingError:您的 SQL 语法有错误;在第 1 行
- cucumber - Gherkin markdown 误解了冒号:符号
- regex - java - 如何在java中的词法分析器中标记字符串?
- javascript - 在 JavaScript forEach 函数中没有发生返回?
- c - 在这种特殊情况下,静态数组慢 700 倍是否合理?
- windows - msvc 2017 x64 寄存器保存