mocha的时序规则讲解


Posted in Javascript onFebruary 16, 2019

前言

对于新手而言,mocha的时序就像谜一般,许多奇怪的测试样例的失败都是由于对时序不清楚。下面我就把我在测试工作中总结的时序规则部分与大家共享。

describe里地时序

simple case

describe('work',function(){
  it('1',func(){});
  it('2',func(){});
  ....
});
//按1,2,3...顺序执行

规则1:describe里地it的非异步部分按它们定义的顺序执行,它们所触发的回调的注册顺序也遵从it的注册顺序

hooks

  • before
  • after
  • beforeEach
  • afterEach

这是比较常用的hooks,我们可以采用hooks改变在describe中的时序,但是记住hooks是在describe的基础上的,与describe联系在一起的。hooks对子describe是不起作用的。

describe间的时序

非describe部分

规则2:不被describe包裹的部分执行顺序的优先级最高

{block1}
describe('1',function(){
  ...
});
{block2}
describe('2',func(){..});
//执行顺序block1,block2,describe1,describe2

并列的describe

规则3:同一层次的describe执行顺序遵从它们的定义顺序

嵌套的describe

describe('parent',func(){
  it('1',func(){..});
  describe('child1',func(){...});
  it('2',func(){...});
  describe('child2',func(){..});
});
//执行顺序为it1,it2,child1,child2

规则4:外层describe的所有it执行优先级高于嵌套的describe

最后我们把这四条规则总结一下

  • describe里地it的非异步部分按它们定义的顺序执行,它们所触发的回调的注册顺序也遵从it的注册顺序
  • 不被describe包裹的部分执行顺序的优先级最高
  • 同一层次的describe执行顺序遵从它们的定义顺序
  • 外层describe的所有it执行优先级高于嵌套的describe

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Javascript 相关文章推荐
把textarea中字符串里含有的回车换行替换成<br>的javascript代码
Apr 20 Javascript
jQuery 常见操作实现方式和常用函数方法总结
May 06 Javascript
js 操作select和option常用代码整理
Dec 13 Javascript
jQuery动态添加删除select项(实现代码)
Sep 03 Javascript
解析JavaScript中点号“.”的多义性
Dec 02 Javascript
js实现鼠标悬浮给图片加边框的方法
Jan 30 Javascript
jQuery消息提示框插件Tipso
May 04 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
Sep 17 Javascript
使用Vue写一个datepicker的示例
Jan 27 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
Jan 21 Javascript
jquery插件开发模式实例详解
Jul 20 jQuery
基于canvasJS在PHP中制作动态图表
May 30 Javascript
jQuery实现ajax的嵌套请求案例分析
Feb 16 #jQuery
解决微信小程序中转换时间格式IOS不兼容的问题
Feb 15 #Javascript
详解Element 指令clickoutside源码分析
Feb 15 #Javascript
Node.js原生api搭建web服务器的方法步骤
Feb 15 #Javascript
jQuery实现简单的Ajax调用功能示例
Feb 15 #jQuery
vue与bootstrap实现简单用户信息添加删除功能
Feb 15 #Javascript
微信小程序实现工作时间段选择
Feb 15 #Javascript
You might like
解析coreseek for sphinx的使用
2013/06/21 PHP
PHP 使用redis简单示例分享
2015/03/05 PHP
实例简介PHP的一些高级面向对象编程的特性
2015/11/27 PHP
用javascript实现自定义标签
2007/05/08 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
浮动的div自适应居中显示的js代码
2013/12/23 Javascript
jQuery判断当前点击的是第几个li的代码
2014/09/26 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
jQuery 特性操作详解及实例代码
2016/09/29 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
使用Vue.js开发微信小程序开源框架mpvue解析
2018/03/20 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
Vue.js轮播图走马灯代码实例(全)
2019/05/08 Javascript
js实现for循环跳过undefined值示例
2019/07/02 Javascript
使用Phantomjs和Node完成网页的截屏快照的方法
2019/07/16 Javascript
javascript实现简易的计算器
2020/01/17 Javascript
详解vue 组件
2020/06/11 Javascript
js删除指定位置超链接中含有百度与360的标题
2021/01/06 Javascript
Python中使用item()方法遍历字典的例子
2014/08/26 Python
python快速查找算法应用实例
2014/09/26 Python
python使用mysql数据库示例代码
2017/05/21 Python
python如何定义带参数的装饰器
2018/03/20 Python
python 巧用正则寻找字符串中的特定字符的位置方法
2018/05/02 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
英国曼彻斯特宠物用品品牌:Bunty Pet Products
2019/07/27 全球购物
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
俄罗斯最大的香水和化妆品网上商店:Randewoo
2020/11/05 全球购物
公司授权委托书范本
2014/04/03 职场文书
死亡证明书样本说明
2014/10/18 职场文书