热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Jest测试框架入门之四个钩子及分组

一、四个钩子Jest提供了四个钩子,分别是beforeEach、afterEach、beforeAll、afterAll。这四个钩子很好理解,当你想在

一、四个钩子

Jest提供了四个钩子,分别是 beforeEach、afterEach、beforeAll、afterAll。这四个钩子很好理解,当你想在每一个 test 前后做同一件事情时,就用 beforeEach 和 afterEach;当你想在所有 test 前后做某一件事情时,就用 beforeAll 和 afterAll。举个例子:

beforeAll(() => {console.log('beforeAll');
})afterAll(() => {console.log('afterAll');
})beforeEach(() => {console.log('beforeEach');
})afterEach(() => {console.log('afterEach');
})test('', () => {console.log('test');expect('apple').toBe('apple');
})/*** 打印顺序为:* 1、beforeAll* 2、beforeEach* 3、test* 4、afterEach* 5、afterAll*/

二、分组

可以使用 describe 关键字对 test 进行分组。有以下两条规则:
1、上面四个钩子可以放在 describe 内,放在 describe 内部的钩子仅对当前分组生效。
2、当有多个 describe 时,会先执行所有的 describe,再执行所有的 test。
举个例子:

beforeAll(() => {console.log('outer-beforeAll');
})afterAll(() => {console.log('outer-afterAll');
})beforeEach(() => {console.log('outer-beforeEach');
})afterEach(() => {console.log('outer-afterEach');
})describe('group 1', () => {beforeEach(() => {console.log('inner-group-1-beforeEach');})afterEach(() => {console.log('inner-group-1-afterEach');})console.log('inner-group-1');test('', () => {console.log('inner-group-1-test');expect('apple').toBe('apple');})
})describe('group 2', () => {console.log('inner-group-2');test('', () => {console.log('inner-group-2-test');expect('banana').toBe('banana');})
})/*** 打印顺序为:* 1、inner-group-1* 2、inner-group-2* 3、outer-beforeAll* 4、outer-beforeEach* 5、inner-group-1-beforeEach* 6、inner-group-1-test* 7、inner-group-1-afterEach* 8、outer-afterEach* 9、outer-beforeEach* 10、inner-group-2-test* 11、outer-afterEach* 12、outer-afterAll*/

推荐阅读
  • 一.介绍string和CString均是字符串模板类,string为标准模板类(STL)定义的字符串类,已经纳入C标准之中 ... [详细]
  • 详解JavaScript的原型与原型链_javascript技巧
    这篇文章主要为大家详细介绍了JavaScript原型与原型链,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下, ... [详细]
  • 本文详细介绍了如何在不同操作系统中设置 Node.js 的环境变量,包括通过命令行、npm 脚本以及直接在代码中设置的方法。 ... [详细]
  • 搜索引擎架构设计
    本文详细介绍了搜索引擎的主要组成部分,包括爬虫模块、索引模块和搜索模块。其中,索引模块采用了高效的二元分词技术进行数据存储,而搜索模块则基于ASP.NET框架实现了一个用户友好的界面和高效的搜索算法。 ... [详细]
  • 本文介绍如何使用JavaScript计算并显示指定年份的周数以及每周的起止日期,例如2015年的第1周从1月1日至1月7日,第2周从1月8日至1月15日。 ... [详细]
  • 本文深入探讨了 JavaScript 中的匿名函数,包括其定义、如何定义以及在实际开发中的多种应用场景。匿名函数,即无名称的函数,是 JavaScript 编程中的重要组成部分,对于提升代码效率和可维护性具有重要作用。 ... [详细]
  • 使用EF Core在.Net Core控制台应用中操作SQLite数据库
    本文介绍如何利用Visual Studio 2019和Windows 10环境,通过Entity Framework Core(EF Core)实现对SQLite数据库的读写操作。项目源代码可从百度网盘下载。 ... [详细]
  • 本文介绍了一种算法,用于在一个给定的二叉树中找到一个节点,该节点的子树包含最大数量的值小于该节点的节点。如果存在多个符合条件的节点,可以选择任意一个。 ... [详细]
  • 理解Redux中的中间件及其应用
    在React应用中,Redux的中间件用于增强store的功能,通过拦截和处理action,可以在action到达reducer之前进行额外的操作,如异步操作、日志记录等。 ... [详细]
  • 设计模式系列-原型模式
    一、上篇回顾上篇创建者模式中,我们主要讲述了创建者的几类实现方案,和创建者模式的应用的场景和特点,创建者模式适合创建复杂的对象,并且这些对象的每个组成部分的详细创建步骤可以是动态的变化的,但 ... [详细]
  • 本文探讨了在Node.js环境中如何有效地捕获标准输出(stdout)的内容,并将其存储到变量中。通过具体的示例和解决方案,帮助开发者解决常见的输出捕获问题。 ... [详细]
  • 本文深入探讨了JLine库中的ConsoleReader.drawBuffer()方法的使用场景和具体实现,通过多个实际代码示例,帮助开发者更好地理解和应用此方法。 ... [详细]
  • 微信小程序支付官方参数小程序中代码后端发起支付代码支付回调官方参数文档地址:https:developers.weixin.qq.comminiprogramdeva ... [详细]
  • 万事起于配置开发环境
    万事起于配置开发环境 ... [详细]
  • HTTP中的Chunked编码与Content-Length的区别及应用场景
    本文探讨了在HTTP协议中,当使用Transfer-Encoding为chunked时为何无需设置Content-Length,以及这种编码方式的具体实现和优势。 ... [详细]
author-avatar
汶汐_782
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有