У меня есть класс Car, который использует speedInterface (на него есть ссылка).
Теперь я хочу имитировать speedInterface с помощью Mock_SpeedInterface.
class speedInterface
{
public:
virtual ~speedInterface() {}
virtual int GetSpeed(void) = 0;
};
class Mock_SpeedInterface : public speedInterface
{
public:
MOCK_CONST_METHOD0(GetSpeed, int());
};
class Car
{
public:
Car(speedInterface& s) : Speedo(s) {}
virtual ~Car() {}
speedInterface& Speedo;
...
};
TEST(TestCar, Test1) {
Mock_SpeedInterface mockSpeed;
...
}
Попытка создать mockSpeed приводит к следующей ошибке компилятора:
Ошибка C2259 «Mock_SpeedInterface»: невозможно создать экземпляр абстрактного класса
IMHO класс Mock_SpeedInterface не является абстрактным классом, потому что он «реализует» GetSpeed. Почему я получаю эту ошибку и как ее предотвратить?
MOCK_CONST_METHOD0
дляGetSpeed
, так как этот методnon-const
. Вы должны использоватьMOCK_METHOD0
. - person rafix07   schedule 16.03.2018