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 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
javascript 兼容鼠标滚轮事件
Apr 07 Javascript
JavaScript asp.net 获取当前超链接中的文本
Apr 14 Javascript
网页整体变灰白色(兼容各浏览器)实例
Apr 21 Javascript
js实现倒计时时钟的示例代码
Dec 17 Javascript
JavaScript绑定事件监听函数的通用方法
May 14 Javascript
jQuery实现简单倒计时功能的方法
Jul 04 Javascript
AngularJS基础 ng-cloak 指令简单示例
Aug 01 Javascript
使用node.js中的Buffer类处理二进制数据的方法
Nov 26 Javascript
vuejs绑定class和style样式
Apr 11 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 Javascript
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
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
yii框架表单模型使用及以数组形式提交表单数据示例
2014/04/30 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
php redis实现文章发布系统(用户投票系统)
2017/03/04 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
2017/12/21 PHP
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
JavaScript内存管理介绍
2015/03/13 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
javascript实现的左右无缝滚动效果
2016/09/19 Javascript
js倒计时小实例(多次定时)
2016/12/08 Javascript
微信小程序 图片加载(本地,网路)实例详解
2017/03/10 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
使用JavaScript实现表格编辑器(实例讲解)
2017/08/02 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
Python正则表达式使用经典实例
2016/06/21 Python
Python函数式编程
2017/07/20 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
Python如何实现动态数组
2019/11/02 Python
介绍一下Ruby的特点
2013/01/20 面试题
干部行政关系介绍信
2014/01/17 职场文书
工作总结与自我评价
2014/09/18 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
Python基础之数据类型知识汇总
2021/05/18 Python
Java Spring Boot请求方式与请求映射过程分析
2022/06/25 Java/Android