C++ 指向为Google测试的mock定义的类内部的静态指针
我试图理解为什么生产中的一段代码是按以下方式设计的: 为了给人们提供一些上下文,有一个类a包含一个方法,称之为some_method,需要模仿。模拟和所有测试都需要与生产代码隔离。因此,我的同事所做的是用以下方式在测试文件夹中重新定义这个类:C++ 指向为Google测试的mock定义的类内部的静态指针,c++,pointers,static,mocking,googletest,C++,Pointers,Static,Mocking,Googletest,我试图理解为什么生产中的一段代码是按以下方式设计的: 为了给人们提供一些上下文,有一个类a包含一个方法,称之为some_method,需要模仿。模拟和所有测试都需要与生产代码隔离。因此,我的同事所做的是用以下方式在测试文件夹中重新定义这个类: class A { class mockA { public: mockA() { pointer_mockA = this; }
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在cpp测试文件中初始化为NULL
问题