Я пытаюсь понять, почему часть кода с производства была разработана следующим образом: чтобы дать людям некоторый контекст, существует класс A , содержащий метод, называемый его some_method, это надо издеваться. Макет и все тесты должны быть изолированы от производственного кода. Поэтому мои коллеги переопределили этот класс внутри тестовой папки следующим образом:
class A
{
class mockA
{
public:
mockA()
{
pointer_mockA = this;
}
virtual ~mockA(){
pointer_mockA = NULL;
}
MOCK_METHOD1(some_method, string&(bool x));
static mockA* pointer_mockA;
}
string &some_method(bool x);
}
Также в заголовочном файле some_method () определяется следующим образом:
string& some_method(bool x)
{
return mockA::pointer_mockA->some_method(x);
}
mockA :: pointer_A инициализируется значением NULL в файле тестирования cpp.
Вопросы
- Указатель указывает, как статический указатель, на текущий экземпляр класса A? Или просто, почему он используется?
- Почему класс A переопределен в этом заголовочном файле тестирования, если он уже существует в папке, где существует код, который нужно проверить?
- Этодизайн общий? Разве нет более простого дизайна?
- Любые другие комментарии к коду приветствуются.