Как я могу изменить поведение статического метода в C ++? - PullRequest
0 голосов
/ 27 мая 2019

Есть ли способ изменить поведение статического метода, чтобы он возвращал разные параметры?

Я использую Gmock для насмешки, но в этом случае я не могу изменить свой код, и методы должны оставаться статичными

например

class MyClass
{
public:
    static int GetSomething()
    {
        return -1; 
    }
};

Мне нужен метод для возврата положительного числа

Ответы [ 2 ]

2 голосов
/ 27 мая 2019

В этом случае ваши параметры ограничены, но если это просто для имитации, просто заставьте метод возвращать статическую переменную вместо жестко закодированного значения.

class MyClass
{
  static int somethingValue;
public:
  static int GetSomething()
  {
    return somethingValue; 
  }
  static void SetSomething(int value)
  {
    somethingValue = value; 
  }
};
int MyClass::somethingValue = -1;
0 голосов
/ 02 июня 2019

Отказ от ответственности - я работаю в Typemock, компании по тестированию модулей.Вы можете легко изменить поведение метода с помощью нашего API, например:

WHEN_CALLED(MyClass::GetSomething()).Return(15);

Таким образом, во всех ваших тестах GetSomehting вернет 15. Это будет работать и на нестатических методах.

...