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与CSS写在同一个文件里的书写方法
Jun 02 Javascript
Ext JS 4官方文档之三 -- 类体系概述与实践
Dec 16 Javascript
关于JS字符串函数String.replace()
Apr 07 Javascript
文件编码导致jquery失效的解决方法
Jun 26 Javascript
jquery validate表单验证的基本用法入门
Jan 18 Javascript
jQuery通用的全局遍历方法$.each()用法实例
Jul 04 Javascript
概述BootStrap中role="form"及role作用角色
Dec 08 Javascript
详解基于angular-cli配置代理解决跨域请求问题
Jul 05 Javascript
vue使用drag与drop实现拖拽的示例代码
Sep 07 Javascript
写gulp遇到的ES6问题详解
Dec 03 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
Apr 11 Javascript
浅谈JS的原型和原型链
Jun 04 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
stripos函数知识点实例分享
2019/02/11 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
javascript中的对象创建 实例附注释
2011/02/08 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
使用js写的一个简易的投票
2013/11/27 Javascript
浅析JavaScript访问对象属性和方法及区别
2015/11/16 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
nodejs构建本地web测试服务器 如何解决访问静态资源问题
2017/07/14 NodeJs
微信小程序mpvue点击按钮获取button值的方法
2019/05/29 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
JS实现随机抽取三人
2019/11/06 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
[02:02]DOTA2英雄基础教程 斯拉达
2013/12/11 DOTA
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
[44:51]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第二场
2018/04/05 DOTA
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
python写入xml文件的方法
2015/05/08 Python
python抽象基类用法实例分析
2015/06/04 Python
一个基于flask的web应用诞生 组织结构调整(7)
2017/04/11 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
python tkinter GUI绘制,以及点击更新显示图片代码
2020/03/14 Python
基于python的opencv图像处理实现对斑马线的检测示例
2020/11/29 Python
Pycharm 设置默认解释器路径和编码格式的操作
2021/02/05 Python
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
《尊严》教学反思
2014/02/11 职场文书
法制报告会主持词
2014/04/02 职场文书
软件测试专业推荐信
2014/09/18 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
认识实习感想
2015/08/10 职场文书
2015年教师节广播稿
2015/08/19 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
golang fmt格式“占位符”的实例用法详解
2021/07/04 Golang
Redis入门教程详解
2021/08/30 Redis
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers