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 相关文章推荐
jquery 模板的应用示例
Nov 12 Javascript
js网页实时倒计时精确到秒级
Feb 10 Javascript
jQuery中ajax和post处理json的不同示例对比
Nov 02 Javascript
js简单实现点击左右运动的方法
Apr 10 Javascript
js基础知识(公有方法、私有方法、特权方法)
Nov 06 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
Jun 08 Javascript
Node.js中防止错误导致的进程阻塞的方法
Aug 11 Javascript
详解webpack+vue-cli项目打包技巧
Jun 17 Javascript
node内置调试方法总结
Feb 22 Javascript
继承行为在 ES5 与 ES6 中的区别详解
Dec 24 Javascript
vue3.0中setup使用(两种用法)
Dec 02 Vue.js
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
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中substr()函数参数说明及用法实例
2014/11/15 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
Yii实现简单分页的方法
2016/04/29 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
PHP7 标准库修改
2021/03/09 PHP
深入理解JavaScript系列(16) 闭包(Closures)
2012/04/12 Javascript
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
Winform客户端向web地址传参接收参数的方法
2016/05/17 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
vue中可编辑树状表格的实现代码
2020/10/31 Javascript
Python json模块使用实例
2015/04/11 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
基于python爬虫数据处理(详解)
2017/06/10 Python
python数据结构之链表详解
2017/09/12 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
python实现大转盘抽奖效果
2019/01/22 Python
Python之列表实现栈的工作功能
2019/01/28 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
python数据预处理 :数据抽样解析
2020/02/24 Python
将HTML5 Canvas的内容保存为图片借助toDataURL实现
2013/05/20 HTML / CSS
针对HTML5的Web Worker使用攻略
2015/07/12 HTML / CSS
Farnell德国:电子元器件供应商
2018/07/10 全球购物
Bibloo荷兰:女士、男士和儿童的服装、鞋子和配饰
2019/02/25 全球购物
非常详细的C#面试题集
2016/07/13 面试题
餐厅楼面部长岗位职责范文
2014/02/16 职场文书
商业项目策划方案
2014/06/05 职场文书
我的中国梦口号
2014/06/16 职场文书
土地租赁意向书
2014/07/30 职场文书
2014年班务工作总结
2014/12/02 职场文书
小学语文教学随笔
2015/08/14 职场文书
课改心得体会范文
2016/01/25 职场文书
z-index不起作用
2021/03/31 HTML / CSS
Python使用Web框架Flask开发项目
2022/06/01 Python