Ошибка GMOCK: MOCK_METHOD11 не разрешен

Когда я издеваюсь над функцией, которая имеет 11 параметров, она выдает сообщение об ошибке:

ошибка: ‘имя_функции’ не является типом

я использую

MOCK_METHOD11(function_name,int(param1,param2,....,param11);

Это то, что функции с 11 параметрами не могут быть смоделированы?

1

Решение

GMock поддерживает до 10 (включая) параметры для проверяемых функций. Таким образом, вы не можете использовать его для своей функции из коробки. Что вы можете сделать, чтобы высмеять этот метод:

  1. (Предпочтительно) Рефакторинг этого метода, чтобы уменьшить количество параметров. Так много параметров затрудняют контроль и понимание метода.

  2. Введите промежуточный прокси-интерфейс, который будет иметь аналогичный метод, принимающий только 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.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]