Как смоделировать метод, используемый с классом, объявленным внутри свободной функции? - PullRequest
0 голосов
/ 10 января 2020

Я хочу смоделировать набор методов в классе Man. Как сделать это с помощью gmock? Вот как я стараюсь. Что не так?

bool Man::set(uint8_t val)
{
//not important, let it be
 print("aaa");
}


bool alfa(bool a)
{
    Man m;
    m.set(a == true ? 1 : 0);

    return true;
}

class MockMan : public Man {
 public:
    MOCK_METHOD(bool, set, (uint8_t val));
};


TEST(unit_test, Alfa_test) {
    MockMan mock;

    EXPECT_CALL(mock, set(1));

    EXPECT_EQ(alfa(true), true);
}

Я сильно упростил код :) В чем проблема? Mock не вызывается, вместо этого я всегда вызываю оригинальный метод 'set' и печатаю aaa.

...