我正在开发使用的代码boost::asio.为了测试它,我需要从这个库中模拟一组类.我正在使用Google Mock,它允许模拟虚拟方法.通常(和繁琐)的过程是为我需要使用的每个类编写一个接口.
另一方面,Google Mock Cookbook在模拟非虚拟方法时描述了一种替代方法:使用模板.我的问题是我可能需要同时模拟几个类(因此直接使用模板不起作用).所以我想:为什么不使用两级模板?我提出了以下解决方案:
// Classes to be mocked.
class RealA
{
public:
void a() { cout << "RealA::a()" << endl; };
};
class RealB
{
public:
void b() { cout << "RealB::b()" << endl; };
};
// Mock classes.
class MockA
{
public:
void a() { cout << "MockA::a()" << endl; };
};
class MockB
{
public:
void b() { cout << "MockB::b()" << endl; };
};
template<class ABFactory>
class Program
{
public:
void setFactory(ABFactory* factory) …Run Code Online (Sandbox Code Playgroud)