为什么在使用 Google 关闭模拟时需要同时调用重播全部和验证全部
Why do you need to call both replayAll and verifyAll when using Google Closure mocks?
使用Closure的模拟读取代码,我对语法感到非常困惑。许多看起来像这样:
mockChart();
// Test
this.mockControl.$replayAll();
this.mainMethod(testData);
// Verify
this.mockControl.$verifyAll();
// lots of asserts
我不明白为什么人们会同时调用重播然后进行验证。听起来重播实际上是在做记录工作,我本来以为已经开始了。
该流程与我唯一熟悉的其他框架 Mockito 略有不同,我还没有找到这个级别的好文档(只是类级别的 jsdoc)。
你可以认为在用闭包模拟某些东西时有两个阶段。
在第一次测试中,测试会通知模拟框架预期哪些调用以及它应该如何响应它们。在此阶段调用mockFoo.doTheThing()
将在Foo
模拟上添加对doTheThing
的预期调用。
第二个过程中,模拟框架在测试运行时记录调用。在此阶段调用mockFoo.doTheThing()
将记录调用doTheThing
的事实,并可能运行在第一阶段添加的一些测试代码。
第一阶段在创建MockControl
对象时开始,在调用$replayAll
时结束。第二阶段在调用$replayAll
时开始,在调用$verifyAll
时结束,此时模拟框架会检查是否进行了所有预期的方法调用。
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何从Java/scala调用js美化程序
- 如何调用这个匿名 JavaScript 函数
- 如何从模块链中调用函数.导出到节点中
- 我需要从php调用javascript或jquery
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 单击按钮后如何逐个调用分区,上一个分区将隐藏
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- node.js:setInterval()正在跳过调用
- 如何在单击复选框后调用控制器方法
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 使用Google Visualization动态调用构造函数
- 如何在webView,Android中从@JavascriptInterface方法调用Javascript
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 为什么在使用 Google 关闭模拟时需要同时调用重播全部和验证全部
- 多个ajax请求全部返回后的调用处理程序
- each()函数内部有多个ajax调用.一旦全部完成,就做点什么
- 对"全部选中/取消选中"上的每个复选框调用jQuery函数