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 相关文章推荐
IE JS编程需注意的内存释放问题
Jun 23 Javascript
学习javascript,实现插入排序实现代码
Jul 31 Javascript
JavaScript实现文字与图片拖拽效果的方法
Feb 16 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
Feb 01 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
Aug 25 Javascript
JavaScript实现解析INI文件内容的方法
Nov 17 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
May 02 Javascript
es6学习笔记之Async函数的使用示例
May 11 Javascript
js数组去重的N种方法(小结)
Jun 07 Javascript
详解小程序云开发数据库
May 20 Javascript
layui radio点击事件实现input显示和隐藏的例子
Sep 02 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
Nov 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引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
php无限遍历文件夹示例分享
2014/03/04 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
php微信公众平台开发(三)订阅事件处理
2016/12/06 PHP
jquery随意添加移除html的实现代码
2011/06/21 Javascript
关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题
2012/03/01 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
字太多用...代替的方法(两种)
2017/03/15 Javascript
Vue组件模板形式实现对象数组数据循环为树形结构(实例代码)
2017/07/31 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
从零开始封装自己的自定义Vue组件
2018/10/09 Javascript
BootStrap table实现表格行拖拽效果
2018/12/01 Javascript
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
vue3 源码解读之 time slicing的使用方法
2019/10/31 Javascript
Python实现二分查找算法实例
2015/05/26 Python
centos6.7安装python2.7.11的具体方法
2017/01/16 Python
在python中利用opencv简单做图片比对的方法
2019/01/24 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
Python urllib2运行过程原理解析
2020/06/04 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
德国家具折扣店:POCO
2020/02/28 全球购物
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
新闻学专业大学生职业生涯规划范文
2014/03/02 职场文书
优秀班组长事迹
2014/05/31 职场文书
小学生关于梦想的演讲稿
2014/08/22 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
演讲比赛通讯稿
2015/07/18 职场文书
Python基础之条件语句详解
2021/06/16 Python
如何通过一篇文章了解Python中的生成器
2022/04/02 Python