Я прошел тест-управляющий кодом, который использует интерфейсы 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