当我模拟具有11个参数的函数时,它会给出错误消息:
错误:'function_name'不是类型
我正在使用
MOCK_METHOD11(function_name,int(param1,param2,....,param11);
是否有11个参数的函数不能被模拟?
答案 0 :(得分:2)
GMock最多支持10个(包括)模拟函数的参数。因此,您不能将它用于开箱即用的功能。你可以做些什么来模仿这种方法:
(优先)重构此方法以减少参数的数量。如此多的参数使得方法难以控制和理解。
引入具有类似方法的中间代理接口,仅接受10个参数。这很容易实现:
class OriginalInterface
{
public:
virtual void method(int param1, int param2) = 0;
};
class ProxyInterface : public OriginalInterface
{
public:
virtual void method(int param1, int param2)
{
method1(param1);
method2(param2);
}
virtual void method1(int param1) = 0;
virtual void method2(int param2) = 0;
};
// Now you mock on ProxyInterface
class MockInterface : public ProxyInterface
{
public:
MOCK_METHOD1(method1, void(int));
MOCK_METHOD1(method2, void(int));
};
在我的例子中,我将2个参数的方法拆分为2个方法。我认为这个想法很清楚。
3。 (不是最佳的)您可以尝试更改gmock源以添加METHOD11 typedef ..