У меня есть некоторый код C++ следующим образом:C++ - Создание Шпиона в блоке тесты
class MyClass
{
public:
MyClass(OtherClass *obj)
{
obj_ = obj;
}
void myMethod()
{
// Do something
int value = obj_->otherMethod();
// Do something else
}
private:
OtherClass *obj_;
}
Я хочу, чтобы создать модульный тест для проверки функциональности myMethod()
. К сожалению, OtherClass
- это внешняя библиотека, и ее методы не объявлены виртуальными (поэтому я не могу наследовать методы и их заглушить в макете). У меня есть некоторый опыт работы с Mockito, где я, возможно, использовал шпиона для этой цели. Но я не могу найти эквивалент в C++.
Я использую раму googletest, и контекст для этого вопроса (если это помогает) находится в ROS, где я на самом деле пытаюсь заглушить tf::TransformListener
.
Вопрос 1: Есть ли альтернатива шпионам, которые я, возможно, не знаю и могу использовать в этой ситуации?
Вопрос 2: Если нет, есть быстрый и легкий способ для меня, чтобы перестроить свой код так, что я могу использовать макет?