模拟方法在传递给测试类时不返回正确的值

时间:2016-03-08 18:36:16

标签: c++ googletest googlemock gmock

我正在尝试测试一个方法,该方法将对象作为其输入参数,并调用一个返回数组getArray()的方法。我想使用 Google Mock 来模拟这个对象,并告诉它在调用时返回一个特定的数组。否则,我依赖于对象类的实现是正确的。

我已经模仿了要传递给测试方法的对象,如下所示:

class MockInputClass : public InputClass {
    public:
        MOCK_CONST_METHOD0(getArray, std::array<uint8_t, 4>());
};

我的测试如下:

TEST(ClassUnderTest, methodToTest_DoesWhatIWant) {
    MockInputClass mock;
    EXPECT_CALL(mock, getArray())
        .WillRepeatedly(
            Return(std::array<uint8_t, 4>({1, 2, 3, 4}))
        );
    std::cout << "Called in test: " << mock.getArray()[0] << std::endl;
    ClassUnderTest obj;
    obj.methodToTest(mock);
}

在我的classundertest.h中,我已定义methodToTest,如此:

auto methodToTest(InputClass &input) -> void {
    std::cout << "Called in class under test: " << input.getArray()[0] << std::endl;
}

如果我运行测试,则输出为:

Called in test: 1
Called in class under test: 0

出于某种原因,一旦我将我的模拟对象传递给正在测试的类,它似乎不再返回我告诉它的内容。我做错了什么?

0 个答案:

没有答案