Gmock устанавливает параметр

В тестовом методе GMock мне нужно установить для параметра out адрес переменной, чтобы параметр out dequeue(), который data указывает на переменную ch:

MOCK_METHOD1(dequeue, void(void* data));

char ch = 'm';
void* a = (void*)&ch;

EXPECT_CALL(FQO, dequeue(_))
    .WillOnce(/*here I need to set argument to a*/);

Я пытался выяснить побочные эффекты, но получаю ошибку.

1 ответ

Решение

Если вы хотите, чтобы выходной параметр функции указывал на void*тогда его тип должен быть void**:

MOCK_METHOD1(dequeue, void(void** data));

в противном случае вы можете только вернуть значение, но не указатель на значение через выходной параметр.

Если вы внесете соответствующие изменения в подпись вашего dequeue() метод и вызов MOCK_METHOD1(), то это должно делать то, что вы хотите:

EXPECT_CALL(FQO, dequeue(_))
    .WillOnce(SetArgPointee<0>(a));
Другие вопросы по тегам