首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有gmock的11个参数的模拟方法

带有gmock的11个参数的模拟方法
EN

Stack Overflow用户
提问于 2013-03-21 11:53:05
回答 3查看 5K关注 0票数 7

我正在使用gmock模拟遗留代码中的依赖项。其中一个类有一个带有11个参数的方法。当我尝试使用MOCK_METHOD11_WITH_CALLTYPE模拟它时,我发现这个宏并不存在。gmock最多只能支持10个参数。你对此有什么建议?我用虚拟主体实现这个方法吗?或者复制并扩展宏?谢谢!

另外,我现在不需要在我的测试中模拟这个方法,但将来可能需要这样做。

诚挚的问候,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-21 12:22:07

具有超过10个参数的方法可能是麻烦的迹象。我可以建议一个解决方法,它将帮助您的特定情况,但这也可能是一个好主意,而不是模仿。将几个有意义的参数作为一个组,并将它们聚合到一个结构中。然后将该结构的实例作为参数传递给该方法。因此,您可能会有3或4个参数,而不是11个参数。这不仅有助于解决您遇到的模拟库问题,还可以提高类的可用性,因为具有如此多参数的方法通常很难在调用点读取。

票数 6
EN

Stack Overflow用户

发布于 2017-10-13 00:54:25

如果有人需要更多的gmock参数,这里有一个仅用于头的扩展:gmock-more-args

票数 1
EN

Stack Overflow用户

发布于 2019-04-18 23:33:04

您试图模拟的方法是纯虚拟的。以下是我在不更改现有代码的情况下所做的工作:

代码语言:javascript
运行
复制
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
  });

};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15539169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档