Общее пользовательское действие, чтобы установить значение для void ** аргумент с использованием gmockC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Общее пользовательское действие, чтобы установить значение для void ** аргумент с использованием gmock

Сообщение Anonymous »

Я прошел тест-управляющий кодом, который использует интерфейсы Com с использованием GMOCK. Win32 Функции
для работы с указателями return return через void ** < /code> аргументы. Например, при вызове
вызов к функции QueryInterface < /code>, которая вернет указатель на ipersistfile < /code>
interface, я делаю следующее < /p>

CPersistFileMock mockIPersistFile;
EXPECT_CALL(mockIShellLink, QueryInterface(_, _)).WillOnce(DoAll(
SetArg1ToIPersistFile(&mockIPersistFile), Return(S_OK)));
< /code>

где setarg1toipersistfile - это пользовательское действие, определенное так: < /p>

ACTION_P(SetArg1ToIPersistFile, pIPersistFile) {
*reinterpret_cast(arg1) = pIPersistFile;
}
< /code>

Это работает, но проблема в том, что вам нужно написать новое пользовательское действие для каждой комбинации
индекса аргумента и типа, который необходимо возвращать через void ** < /code>. Есть ли способ
для обобщения этого пользовательского действия, чтобы его можно было применять независимо от типа и индекса аргументов (к
что -то вроде setargpointee < /code>, но также осведомлен о типах). < /P>

Подробнее здесь: https://stackoverflow.com/questions/340 ... sing-gmock
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»