使用gmock模拟具有11个参数的方法
mock method with 11 parameters with gmock
我使用gmock来模拟遗留代码中的依赖项。其中一个类有一个包含11个参数的方法。当我尝试使用MOCK_METHOD11_WITH_CALLTYPE来模拟它时,我发现这个宏不存在。Gmock最多只支持10个参数。你有什么建议吗?我实现这个方法与假体吗?或者复制&扩展宏?谢谢!
PS,我现在不需要在我的测试中模拟这个方法,但将来可能需要这样做。
问好,
参数超过10个的方法可能是麻烦的迹象。我可以建议一个解决方法,这将有助于您的具体情况,但这也可能是一个好主意,除了嘲笑。选取几个有意义的参数作为一个组,并将它们聚合在一个结构体中。然后将该结构体的实例作为参数传递给该方法。所以不是11个参数,而是3或4个。这不仅有助于解决您遇到的模拟库问题,还可以提高类的可用性,因为具有如此多参数的方法通常难以在调用站点读取。
如果有人需要更多的gmock参数,这里有一个头文件扩展:gmock-more-args
您试图模拟的方法是纯虚拟的。下面是我在不改变现有代码的情况下所做的:
struct ParamsMoreThanTen
{
Param_Type param_1;
Param_Type param_N;
};
MOCK_METHOD1(methodWithMoreThanTenParms, methodReturnType(ParamsMoreThanTen params));
methodReturnType methodWithMoreThanTenParms(
Param_Type param_1,
Param_Type param_N) override
{
return methodWithMoreThanTenParms(ParamsMoreThanTen
{
Param_Type param_1,
Param_Type param_N
});
};
相关文章:
- 使用在用于SFINAE的void_t中具有参数的方法
- 如何制作一个将函数作为参数的类方法
- c++方法参数只能在linux的发布模式下自行更改
- 使用用户定义的参数调用future/async并调用类方法
- 将成员函数指针作为参数传递给模板方法
- 在 cpp 文件中隐藏采用模板参数引用的方法
- 使用模板参数重载C++方法:如何使其适用于模板的子类?
- 具有字符串化的可变参数宏的现代/通用方法
- 在 C++ 中将非指定类型作为参数传递的最佳方法?
- 如何在方法中传递结构参数
- 如何将类成员方法的参数列表自动填充写入可变参数?
- C++有什么方法可以在既不调用函数模板也不提供其模板参数的情况下引用函数模板?
- C++方法是否可以根据传递给构造函数的参数具有不同的返回类型?
- C++接口继承不同的参数方法
- C++ 模板:重载时找不到基类类型参数方法
- 如何使用迭代器作为参数方法?
- 具有不同亚型的参数方法
- 如何以相同的方法在子类中超载的相同方法来实现工作变量参数方法
- 如何将 C 中声明的可选参数方法转换为 c++
- 如果模板化"ResourceCache"需要不同的创建参数/方法,它们如何加载/创建 T 类型的资源?