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 相关文章推荐
js 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
JavaScript Array Flatten 与递归使用介绍
Oct 30 Javascript
javascript实现分栏显示小技巧附图
Oct 13 Javascript
很实用的js选项卡切换效果
Aug 12 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
Oct 11 Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 Javascript
谈谈JS中的!!
Dec 07 Javascript
vue-router 源码之实现一个简单的 vue-router
Jul 02 Javascript
jQuery实现输入框的放大和缩小功能示例
Jul 21 jQuery
vue组件从开发到发布的实现步骤
Nov 11 Javascript
vue中如何实现后台管理系统的权限控制的方法步骤
Sep 05 Javascript
layer弹出层自适应高度,垂直水平居中的实现
Sep 16 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
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
得到文本框选中的文字,动态插入文字的js代码
2007/03/07 Javascript
JavaScript 计算当天是本年本月的第几周
2009/03/22 Javascript
判断是否安装flash player及当前版本的JS代码
2013/08/08 Javascript
javascript中的作用域和上下文使用简要概述
2013/12/05 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
原生JS实现图片轮播与淡入效果的简单实例
2016/08/21 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
JavaScript中的return布尔值的用法和原理解析
2017/08/14 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
用Python实现一个简单的线程池
2015/04/07 Python
CentOS 6.5下安装Python 3.5.2(与Python2并存)
2017/06/05 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
python3+PyQt5使用数据库表视图
2018/04/24 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
2019/04/15 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
keras tensorflow 实现在python下多进程运行
2020/02/06 Python
python中如何设置代码自动提示
2020/07/15 Python
Python Selenium库的基本使用教程
2021/01/04 Python
美国宠物商店:Wag.com
2016/10/25 全球购物
澳大利亚药房在线:ThePharmacy
2017/10/04 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
美国职棒大联盟的官方手套、球和头盔:Rawlings
2020/02/15 全球购物
个人求职信范例
2014/01/29 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
市场营销工作计划书
2014/05/06 职场文书
化学教育专业求职信
2014/07/08 职场文书
五年级上册复习计划
2015/01/19 职场文书