Установка пользовательского значения для указателя void в gmock

Я использую Google Mock для модульного тестирования моей реализации C. Для одной из моих фиктивных функций параметр out определяется как недействительный указатель. Мок-функция приведена ниже:

MOCK_METHOD3(file_read, int(const char *file_name, const char *type_name, void     *data_p));

Согласно Как установить значение аргумента void * фиктивного метода в фиктивном тестировании Google?

Я создал ACTION_P

ACTION_P(SetArg2ToMCValue, value) {   reinterpret_cast<void *>(arg2) = value; }

В моем тестовом коде я установил значение по умолчанию для параметра, который приводится к void в ACTION_P, и мое ожидание

  struct.a = 5.0;
  struct.b = 15.0;
  //Expectations
EXPECT_CALL(*libfile_mock,  file_read(_,_,_)).WillOnce(DoAll(SetArg2ToMCValue(&struct), Return(0)));

Когда тест запускается, я не вижу пользовательских значений, я устанавливаю в struct. Скорее я вижу 0. Как мне установить значение параметра out, который также является пустым указателем в Google Mock?


person Ganesh Jayachandran    schedule 01.06.2015    source источник
comment
После некоторого поиска я обнаружил, что arg2 уже будет пустой точкой, и поэтому мне нужно привести его к типу структуры в пределах ACTION_P ACTION_P(SetArg2ToMCValue, value) { *reinterpret_cast‹struct *›(arg2) = *value; }   -  person Ganesh Jayachandran    schedule 02.06.2015


Ответы (1)


После некоторого поиска я обнаружил, что arg2 уже будет пустым указателем, и поэтому мне нужно привести его к типу структуры в ACTION_P.

ACTION_P(SetArg2ToMCValue, value) { *reinterpret_cast<struct *>(arg2) = *value; } 

Это сработало.

person Ganesh Jayachandran    schedule 02.06.2015