Фактическое количество вызовов функции не соответствует EXPECT_CALL (mockImplClass, receive (_, _)) - PullRequest
1 голос
/ 27 апреля 2020

Я столкнулся с проблемой при запуске gtest для следующего примера кода. игнорировать заголовок включает как его компилируемый и нормально работает класс, который вызывает основной класс

class IntermidiateClass
{
    std::shared_ptr<ImplClass> implClassPtr = nullptr;
public:
    setImplClassptr(std::shared_ptr<ImplClass> ptr)
    {
        implClassPtr  = ptr;
    }
    int getValue()
    {
        structX x;
        structY y;
        return(implClassPtr->receive(x, y));
    }
};

// Mock Class

class MockImplClass: public ImplClass
{
public:
    MOCK_METHOD2(receive, int(structX, structY));
}

// Контрольный пример

TEST(MyTest, TEST1)
{
    MockImplClass mockImplClass;
    IntermidiateClass intermidiateObj;
    intermidiateObj.setImplClassptr(std::make_shared<MockImplClass>());

    EXPECT_CALL(mockImplClass, receive(_, _))
    .Times(AtLeast(1))
    .WillRepeatedly(Return(1));

    int retVal = intermidiateObj.getValue();
}

Спасибо, Шива

1 Ответ

0 голосов
/ 27 апреля 2020

Вы создаете совершенно новый объект класса MockImplClass здесь:

std::make_shared<MockImplClass>()

Таким образом, ваш первый созданный объект

MockImplClass mockImplClass;

никогда не привыкает к вызову receive()

...