- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个模拟这样的方法:
MOCK_METHOD2(setValue, int(int notImportant, unsigned int value));
MOCK_METHOD2(getValue, int(int notImportant, unsigned int *value));
在整个测试过程中可以多次调用方法,因此存储设置的值(并在请求时传递最新的值)很重要。
然后我尝试模拟这种行为:
unsigned int myStoredValue;
ON_CALL(ddalCpriLink, setValue(_, _))
.WillByDefault(DoAll(SaveArg<1>(&myStoredValue),
Return(RETURN_OK)));
ON_CALL(ddalCpriLink, GetValue(_, _))
.WillByDefault(DoAll(SetArgPointee<1>(myStoredValue),
Return(RETURN_OK)));
这就是问题所在。 SetArgPointee<> 不传递存储在 myStoredValue 中的值,它只是将 given 变量设置为 0。理论上,可以使用直接值,但它使测试变得不合理(如果 set 调用不正确怎么办?)。另一种选择是使用 Invoke() 传递一个函数,但如果可能的话,我宁愿坚持使用 gmock 解决方案。
我的问题是:是否可以将变量的值传递给 SetArgPointee<>?如果不是,googletest 团队是否有任何特殊原因决定不实现此类功能?
最佳答案
如果您使用 ByRef
扩展您的代码,它会起作用:
ON_CALL(ddalCpriLink, GetValue(_, _))
.WillByDefault(DoAll(SetArgPointee<1>(ByRef(myStoredValue)),
Return(RETURN_OK)));
如果您不使用 ByRef
,则在执行该行时使用 myStoredValue
的值。
关于googlemock - 带有变量的 SetArgPointee,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48279097/
我有一个模拟这样的方法: MOCK_METHOD2(setValue, int(int notImportant, unsigned int value)); MOCK_METHOD2(getValu
我有一个模拟这样的方法: MOCK_METHOD2(setValue, int(int notImportant, unsigned int value)); MOCK_METHOD2(getValu
我最近在使用 GMock,但无法在以下代码中成功使用 SetArgPointee。 class rox{ public : int a, b; rox(){} rox(cons
我正在尝试使用 SetArgPointee 在模拟上设置“out”参数.这是我正在测试的代码: DWORD bodysize = 1024; char body[1024]; HRESULT hr =
我是一名优秀的程序员,十分优秀!