Перегрузка метода в Google Test

208
05 февраля 2018, 05:33

В моём TestMock классе у меня есть два метода:

  1. MOCK_CONST_METHOD0(function1, const bool&());
  2. MOCK_METHOD0(function1, bool&());

В тестовой фикстуре я хочу вызвать второй мок, но тест вызывает первый мок.

    EXPECT_CALL(*testMock, function1());

Что я должен сделать, чтобы в EXPECT_CALL вызывался второй мок?

class TestA
{
public:
    virtual ~ TestA() {}
    bool foo1()
    {
        return function1();
    }
    virtual bool& function1() = 0;
    virtual const bool& function1() const = 0;
};

class TestMock : public TestA
{
public:
    MOCK_CONST_METHOD0(function1, const bool&());
    MOCK_METHOD0(function1, bool&());
    virtual ~ TestMock () {}
};
class TestConfiguration : public :: testing :: Test
{
    void SetUp()
    {

    }
    void TearDown()
    {
        delete testMock;
    }
public:
TestMock *testMock;
};
TEST_F(TestConfiguration, testFooTEST)
{
    testMock = new TestMock();
    EXPECT_CALL(*testMock, function1());
    testMock->foo1();
}
Answer 1

EXPECT_CALL ничего не вызывает, это макрос служит для регистрации ожиданий вызова, т.е. написав такую строчку EXPECT_CALL(*testMock, function1());, Вы говорите: «до конца этого теста на объекте *testMock должен произойти вызов function1». Если условие не соблюдено, то получите ошибку.

GMock различает перегруженные методы и для Вашего случая тоже имеет решение. По умолчанию, в такой перегрузке GMock будет ожидать вызов неконстантного метода, чтобы указать ему, что нужно ждать вызов константного метода нужно написать так: EXPECT_CALL(Const(*testMock), function1());

READ ALSO
Как добавит файл манифеста в С++ проект?

Как добавит файл манифеста в С++ проект?

Искал пол дня как это сделать

248
Неполный тип. Перекрестные классы

Неполный тип. Перекрестные классы

Добрый вечерМне нужно из класса B получать доступ к методам класса A

277
Prefix trie insert и многопоточность

Prefix trie insert и многопоточность

Я хочу попытаться получить счетчик слов на основе префикса trieНо у меня есть некоторые проблемы

185