Имитация невиртуального метода, генерирующего ошибки

Я пытаюсь освоить Google Mocks, но столкнулся с проблемой, пытаясь издеваться над невиртуальными методами. У меня есть класс Socket, который я хочу издеваться. У него есть невиртуальный метод под названием «запись», который принимает аргументы:

class Socket {
public:
    int write(const unsigned char* buffer, size_t bufferLength) const;
}

Итак, я создаю класс Mock как указанную кулинарную книгу:

class MockSocket {
public:
    MOCK_CONST_METHOD0(write, int(const unsigned char* data, size_t dataLength));
};

Но это не компилируется. Выдает следующие ошибки:

error: size of array ‘this_method_does_not_take_0_arguments’ is negative
error: no matching function for call to ‘testing::internal::FunctionMocker<int ()(const unsigned char*, size_t)>::Invoke()’
error: no matching function for call to ‘testing::internal::FunctionMocker<int ()(const unsigned char*, size_t)>::With()’

Может кто-нибудь сказать мне, почему??

Спасибо.


person DaveR    schedule 15.08.2013    source источник


Ответы (1)


Хорошо, сегодня утром я недостаточно крепко размешал кофе. Разобрался с проблемой. Использовал неправильный макрос. Это работает:

class MockSocket {
public:
    MOCK_CONST_METHOD2(foo, int(const unsigned char* buffer, size_t len));
};
person DaveR    schedule 15.08.2013