Я новичок в Google Mock и пытаюсь смоделировать интерфейс, но получаю ошибку компоновщика с неопределенными символами для архитектуры x86_64
Вот мой упрощенный код:
У меня есть следующее в .h файле:
namespace Mynamespace
{
class IMyInterface
{
public:
virtual ~ IMyInterface() {};
virtual void myFunction() = 0;
};
}
это в другом .h файле:
#include <gmock/gmock.h>
#include <IMyInterface.h>
namespace testing
{
class MyClassMock : public IMyInterface
{
public:
~ MyClassMock();
MyClassMock(int, int, int);
MOCK_METHOD0(myFunction, void());
};
}
и это в моем файле теста .cpp:
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <IMyInterface.h>
namespace testing
{
TEST(MyClassMock, myFunction)
{
MyClassMock mcm(0,0,0);
}
}
У вас есть идея, что я делаю не так?
Любая помощь будет очень ценится!
ура,
Simon
EDIT:
К сожалению, макет все еще не работает. После того, как я добавил реализацию следующим образом:
namespace testing
{
MyClassMock:: MyClassMock(int a, int b, int c)
{
}
MyClassMock::~ MyClassMock()
{
}
}
"myFunction" не будет вызываться, когда я делаю
#include "MyClassMock.h"
#include <gmock/gmock.h>
#include <gtest/gtest.h>
using ::testing::AtLeast;
using namespace testing;
TEST(MyClassTest, canCallFunction)
{
MyClassMock mock(0,0,0);
EXPECT_CALL(mock, myFunction())
.Times(AtLeast(1));
}
возвращение:
EXPECT_CALL (mock, myFunction ())
Ожидается: будет вызван хотя бы один раз
Актуально: никогда не звонил - неудовлетворен и активен