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实现上传图片前的预览(TX的面试题)
Aug 14 Javascript
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
Jul 26 Javascript
JavaScript高级程序设计(第3版)学习笔记10 再访js对象
Oct 11 Javascript
Jquery 在页面加载后执行的几种方式
Mar 14 Javascript
DOM基础教程之模型中的模型节点
Jan 19 Javascript
jQuery及JS实现循环中暂停的方法
Feb 02 Javascript
javascript实现数组中的内容随机输出
Aug 11 Javascript
javascript瀑布流布局实现方法详解
Feb 17 Javascript
vue的过滤器filter实例详解
Sep 17 Javascript
JS回调函数 callback的理解与使用案例分析
Sep 09 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
Jul 27 Javascript
vue打包npm run build时候界面报错的解决
Aug 13 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
建立文件交换功能的脚本(一)
2006/10/09 PHP
Yii rules常用规则示例
2016/03/15 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
json数据与字符串的相互转化示例
2013/09/18 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
借助JavaScript脚本判断浏览器Flash Player信息的方法
2014/07/09 Javascript
jQuery中[attribute=value]选择器用法实例
2014/12/31 Javascript
jquery实现鼠标拖拽滑动效果来选择数字的方法
2015/05/04 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
JavaScript new对象的四个过程实例浅析
2018/07/31 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
JS栈stack类的实现与使用方法示例
2019/01/31 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
VUE和Antv G6实现在线拓扑图编辑操作
2020/10/28 Javascript
Echarts在Taro微信小程序开发中的踩坑记录
2020/11/09 Javascript
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
Python 多线程的实例详解
2017/09/07 Python
Python enumerate函数功能与用法示例
2019/03/01 Python
Django框架中间件(Middleware)用法实例分析
2019/05/24 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
Python进行特征提取的示例代码
2020/10/15 Python
CSS3提交意见输入框样式代码
2014/10/30 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
华为菲律宾官方网站:HUAWEI Philippines
2021/02/23 全球购物
档案检查欢迎词
2014/01/13 职场文书
伊索寓言教学反思
2014/05/01 职场文书
经典禁毒标语
2014/06/16 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python
如何利用React实现图片识别App
2022/02/18 Javascript