Gmock:返回无效值

问题描述 投票:0回答:1

使用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,尽管代码表明显然不可能得到这样的结果。

c++ unit-testing gmock
1个回答
0
投票

除非另有指定,否则模拟将返回默认值。

它不调用基类实现。

© www.soinside.com 2019 - 2024. All rights reserved.