Пересмешка - Методы и инструменты

Я самостоятельно изучил gmock и понял его функциональность. Было бы здорово, если бы мы могли посмеяться над некоторыми методами и проверить наш поток.

Теперь моя проблема заключается в том, что у нас есть огромное хранилище кода, которое вызывает много интерфейсов субмодулей для определенного потока - то есть метод базового класса вызывает несколько интерфейсов субмодулей / субмодулей:

  bool classA::methodA(uint64_t number) {
  if (0 == number) {
    return false;
  }
  Foo* p=&obj;
  while (true && (p->*fptr)(number)) {
    if (1 == number) {
      return true;
    } else if (0 == number%2) {
      number = number / 2;
    } else {
      Printer* machine;
      char* buff;
      PTR pmf[2]= {&B::Copy, &B::Append}; 
      (machine->*pmf[APPEND])(buff, number);
      number = 3 * number + 1;
    }
  }
}

Существуют ли правила метода / механизма / большого пальца, по которым мы можем идентифицировать / знать все методы подмодулей, которые необходимо смоделировать для проверки моего класса на 100% кода?

1 ответ

Решение

Здесь нет необходимости в правиле. Вы просто издеваетесь над вещами, которые нужно высмеивать. Ни больше ни меньше.

Имейте в виду: вы пишете модульные тесты с идеей тестировать свой модуль изолированно. Это означает, что вам иногда приходится "вырезать" зависимости, которые есть у вашего модуля, в другом коде.

Теперь давайте предположим, что ваш код использует некоторую зависимость B.

  • когда вы можете вызывать свой код, сохраняя реальный B на месте - хорошо. Тогда сделай это.
  • когда B либо не работает в настройках модульного теста, либо вам нужно контролировать, что B возвращает в ваш код, - тогда вам нужно подделать.

В этом смысле эмпирическое правило таково: издевайтесь над вещами, если нужно.

Поэтому мы не можем сказать вам, что именно вы должны издеваться. Вместо этого вы должны сделать шаг назад и:

  • Прежде всего, поймите, как вы хотите провести модульное тестирование своего кода.
  • тогда вы посмотрите на его зависимости
  • тогда вы можете экспериментировать, что происходит, когда вы вызываете свой код без каких-либо насмешек
  • затем вы делаете свои выводы из данных, собранных предыдущими шагами
Другие вопросы по тегам