Turtle Mock:如何忽略意外来电?

Posted

技术标签:

【中文标题】Turtle Mock:如何忽略意外来电?【英文标题】:Turtle Mock: How to ignore unexpected calls? 【发布时间】:2021-04-17 19:32:52 【问题描述】:

是否可以忽略 Turtle Mock 的意外方法调用?在我的测试期间,模拟方法被多次调用。我想在每个测试中只检查一个带有特定参数的调用。现在我必须编写一个巨大的测试,我必须编写所有方法调用。

【问题讨论】:

你有一些代码要显示吗?通过对文档的粗略扫描,我猜您可以明确使用 MOCK_RESET/MOCK_VERIFY 获得免费通行证。如果你添加一个你被卡住的小例子,我们可以看看 【参考方案1】:

The expectation selection algorithm 描述了如何设置多个调用:

然后通过按定义的顺序处理期望来处理每个方法调用:

寻找具有从左到右评估的有效参数约束的匹配项 检查此匹配项的调用计数是否已用完

所以如果你设置一个你期望的和一个通用的,比如

MOCK_EXPECT( v.display ).once().with( 0 );
MOCK_EXPECT( v.display );

它应该让其他电话安静下来,同时仍然确保你关心的电话会得到满足。

现在如果你想强制执行调用的顺序,例如确保你感兴趣的调用首先发生,你必须use a sequence,例如

mock::sequence s;
MOCK_EXPECT( v.display ).once().with( 0 ).in( s );
MOCK_EXPECT( v.display ).in( s );

【讨论】:

感谢您的提示。但似乎真的需要“一次”,否则这个测试是绿色的:class A public: virtual void f(int a) = 0; ; MOCK_BASE_CLASS(AMock, A) public: MOCK_METHOD(f, 1, void(int)) ; void test(A* a) a->f(5); a->f(66); a->f(7); BOOST_AUTO_TEST_CASE(***_SimpleTest) AMock aMock; MOCK_EXPECT(aMock.f).with(6); MOCK_EXPECT(aMock.f); test(&aMock); 啊,是的,好点,没有once(),那么«no call»是有效的。我会更新我的答案。

以上是关于Turtle Mock:如何忽略意外来电?的主要内容,如果未能解决你的问题,请参考以下文章

电话录音服务仅记录来电者的声音。 (安卓)

如何在进销存软件中实现来电弹屏

iOS中如何监测来电

在离子中,如何检测来电

蓝牙设备如何显示来自 iPhone 的来电?

如何模拟来电?