Задаване на персонализирана стойност за празен указател в gmock

Използвам Google Mock за модулно тестване на моята C реализация. За една от моите макетни функции изходният параметър е дефиниран като празен указател. Макетната функция е дадена по-долу:

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)));

Когато тестът се изпълнява, не виждам персонализираните стойности, задавам на структурата. По-скоро виждам 0. Как да задам стойност на изходящ параметър, който също е празен указател в 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