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 相关文章推荐
checkbox 复选框不能为空
Jul 11 Javascript
jquery 卷帘效果实现代码(不同方向)
Feb 05 Javascript
jquery 延迟执行实例介绍
Aug 20 Javascript
javascript框架设计之框架分类及主要功能
Jun 23 Javascript
js实现汉字排序的方法
Jul 23 Javascript
JQuery validate插件验证用户注册信息
May 11 Javascript
AngularJs 常用的过滤器
May 15 Javascript
Vue-cli中为单独页面设置背景色的实现方法
Feb 11 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
vue.js中导出Excel表格的案例分析
Jun 11 Javascript
微信小程序实现渐入渐出动画效果
Jun 13 Javascript
layui数据表格 table.render 报错的解决方法
Sep 29 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
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
js判断屏幕分辨率的代码
2013/07/16 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
JavaScript中解析JSON数据的三种方法
2015/07/03 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
使用jQuery操作HTML的table表格的实例解析
2016/03/13 Javascript
babel基本使用详解
2017/02/17 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
2017/02/18 Javascript
详解用vue.js和laravel实现微信支付
2017/06/23 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
详解vue-cli3使用
2018/08/14 Javascript
解决angularjs WdatePicker ng-model的问题
2018/09/13 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
监控微信小程序中的慢HTTP请求过程详解
2019/07/05 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
jquery实现直播视频弹幕效果
2020/02/25 jQuery
uniapp实现可以左右滑动导航栏
2020/10/21 Javascript
Python抓取手机号归属地信息示例代码
2016/11/28 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
Python实现的建造者模式示例
2018/08/06 Python
原生python实现knn分类算法
2019/10/24 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
python实现滑雪游戏
2020/02/22 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
HTML5添加鼠标悬浮音响效果不使用FLASH
2014/04/23 HTML / CSS
大专应届生个人的自我评价
2013/11/21 职场文书
高二美术教学反思
2014/01/14 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
银行求职信范文
2019/05/13 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python
Python实现文字pdf转换图片pdf效果
2022/04/03 Python
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis