Когда я издеваюсь над функцией, которая имеет 11 параметров, она выдает сообщение об ошибке:
ошибка: ‘имя_функции’ не является типом
я использую
MOCK_METHOD11(function_name,int(param1,param2,....,param11);
Это то, что функции с 11 параметрами не могут быть смоделированы?
GMock поддерживает до 10 (включая) параметры для проверяемых функций. Таким образом, вы не можете использовать его для своей функции из коробки. Что вы можете сделать, чтобы высмеять этот метод:
(Предпочтительно) Рефакторинг этого метода, чтобы уменьшить количество параметров. Так много параметров затрудняют контроль и понимание метода.
Введите промежуточный прокси-интерфейс, который будет иметь аналогичный метод, принимающий только 10 параметров. Это легко достичь:
class OriginalInterface
{
public:
virtual void method(int param1, int param2) = 0;
};
class ProxyInterface : public OriginalInterface
{
public:
virtual void method(int param1, int param2)
{
method1(param1);
method2(param2);
}
virtual void method1(int param1) = 0;
virtual void method2(int param2) = 0;
};
// Now you mock on ProxyInterface
class MockInterface : public ProxyInterface
{
public:
MOCK_METHOD1(method1, void(int));
MOCK_METHOD1(method2, void(int));
};
В моем примере я разделил метод с 2 параметрами на 2 метода. Я думаю, что идея ясна.
3 (Не оптимально) Вы можете попытаться изменить исходные тексты gmock, добавив определения типа METHOD11.
Других решений пока нет …