我怎么能反复期待接二连三的电话
How do I repeatedly expect a sequence of calls?
我正在编写一个测试来验证图像处理线程上的调用顺序。相关的测试代码片段如下所示:
Sequence s1, s2;
...
EXPECT_CALL(*mMockVideoSource, getFrame()).InSequence(s2).WillRepeatedly(Return(mFakeBuffer));
EXPECT_CALL(*mMockProcessor, processFrame(_,_)).InSequence(s2).WillRepeatedly(Return(0));
EXPECT_CALL(*mMockVideoSource, releaseFrame(_)).Times(AnyNumber()).InSequence(s2);
...
在这种情况下,调用的顺序非常重要。getFrame()
, processFrame()
和releaseFrame()
必须按此顺序调用。不幸的是,上面的代码并没有真正实现我想要的。上面的代码将允许在调用processFrame()
之前重复调用getFrame()
,并且在releaseFrame()
之后调用getFrame()
被认为是错误的,因为它打破了序列。
是否有一种方法可以期望重复进行特定顺序的调用?我不关心序列执行了多少次,只要函数按顺序调用:get, process, release, get, process, release…
您可以在调用mock (https://code.google.com/p/googlemock/wiki/CookBook#Combining_Actions)和一些全局状态(如"lastAction")时创建副操作。
侧边动作看起来像:
void checkSequenceCorrectness(ActionType currAction)
{
if (currAction == PROCESS_FRAME) EXPECT_EQ(GET_FRAME, lastAction);
(more ifs)
...
lastAction = currAction;
}
可以通过以下方式将其绑定为mock:
EXPECT_CALL(*mMockProcessor, processFrame(_,_))
.WillRepeatedly(DoAll
Return(0),
Invoke(checkSequenceCorrectness(PROCESS_FRAME)));
相关文章:
- C++ 电话号码字母拨号程序 - 语法错别字?还是非 ASCII 字符?
- 电话价格问题(十月挑战代码厨师)
- 使用 Firebase 从C++获取用户的电话号码
- 拦截黑莓电话
- 使用Regex验证电子邮件和电话字段QT
- 电话拨号程序将字母转换为卡片花色而不是数字
- 文本文件中的电话号码查找
- 如何实现C 电话号码格式:(000)-000-000
- 如果 LibpocoFoundation 与我的小应用程序相关联,readdir 就会挂断电话
- C++ 2D 阵列...迷失在原型和电话上,在任何地方都看不到这个
- C 电话号码程序
- 电话目录程序使用C 中的2D数组
- 隐式操作员bool()没有回应我的电话
- 我想串入文本文档中列出的电话号码
- 如何在BlackBerry Cascades中显示带有一定数量的电话手板
- 编译弃用电话的时间检测
- 从NDK获取EMEI或电话ID
- 我的第三方电话遇到了C2758错误
- 如何将C/C++printf()消息重定向到windows电话日志系统
- 我怎么能反复期待接二连三的电话