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 相关文章推荐
再说AutoComplete自动补全之实现原理
Nov 05 Javascript
仿谷歌主页js动画效果实现代码
Jul 14 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
Nov 23 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
JS正则替换去空格的方法
Mar 24 Javascript
基于zepto.js实现手机相册功能
Jul 11 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 Javascript
Vue组件实例间的直接访问实现代码
Aug 20 Javascript
jQuery插件DataTables分页开发心得体会
Aug 22 jQuery
vue-cli常用设置总结
Feb 24 Javascript
Vue中Axios从远程/后台读取数据
Jan 21 Javascript
JavaScript中变量提升机制示例详解
Dec 27 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文件
2007/01/04 PHP
PHP+FLASH实现上传文件进度条相关文件 下载
2007/07/21 PHP
PHP 上传文件的方法(类)
2009/07/30 PHP
关于更改Zend Studio/Eclipse代码风格主题的介绍
2013/06/23 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
PHP实现抽奖功能实例代码
2020/06/30 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
动态创建的表格单元格中的事件实现代码
2008/12/30 Javascript
JavaScript实现twitter puddles算法实例
2014/12/06 Javascript
JavaScript面向对象的实现方法小结
2015/04/14 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
jQuery+PHP+MySQL二级联动下拉菜单实例讲解
2015/10/27 Javascript
js实现跨域的多种方法
2015/12/25 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析
2018/08/25 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
vue路由--网站导航功能详解
2019/03/29 Javascript
如何正确理解vue中的key详解
2019/11/02 Javascript
vue.config.js中配置Vue的路径别名的方法
2020/02/11 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
Python wordcloud库安装方法总结
2020/12/31 Python
策划助理岗位职责
2013/11/18 职场文书
表彰先进集体通报
2014/01/12 职场文书
工厂门卫岗位职责范本
2014/04/04 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
上课说话检讨书500字
2014/11/01 职场文书
委托公证书样本
2015/01/23 职场文书
圣诞晚会主持词
2015/07/01 职场文书
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android