В настоящее время я работаю над классом, который использует другой класс, который имеет только статические функции.
Все работало нормально, пока я не попробовал протестировать свой класс.
Вот простой пример кода проблемы:
class A {
static String getSometing() {
return String("Something: ") + heavyCalculation().asString();
}
}
class B {
B() {}
~B() {}
String runSomething(const String& name) {
if(name.equals("something")) {
return A::getSomething();
} else {
return "Invalid name!";
}
}
}
Предполагая, что класс A работает правильно (и был протестирован его модульными тестами), я хотел бы проверить функцию runSomething в классе B.
Моим первым вариантом было бы создание макетов для внутренних классов (в этом примере - класс A), но в этом случае он не даст мне ничего унаследовать от A, потому что он имеет только статические функции.
Мой второй вариант заключается в том, чтобы инкапсулировать вызовы класса A в частные функции внутри B, чтобы я мог контролировать их возвращаемые значения (хотя выбор этой опции немного усложнит задачу).
Мой вопрос к вам: Существуют ли лучшие способы тестирования классов C ++, которые зависят от статических классов / функций, чем мои текущие параметры?
Заранее спасибо,
Tal.