如果想使用jest做前端的自动化测试的话,必须使用模块化语法,做模块化导出。

为什么需要做模块导出?
Jest在前端自动化测试中帮我们完成了两类的内容:

  • 单元测试:也叫模块测试
  • 集成测试:也叫多个模块测试

所以我们的业务代码,必须改造成模块的方式,符合jest的要求,它才能帮助你去做自动化测试。否则它没办法完成单元测试和集成测试。

Jest的安装使用

1. 安装:

npm  i  jest  -D

2. 代码要以模块的形式导出,在测试文件里引用
3. 修改package.json配置文件

"scripts": {"test": "jest"
}

4. 执行测试命令

npm  test

Jest的配置

当我们不做Jest配置时,jest一样可以正常使用,是因为jest是有默认的配置。如果我们想修改jest的默认配置,我们可以把jest的配置项暴露出来,以便我们手动配置。具体步骤如下:

1. 在项目目录下执行命令:npx jest --init

  • 意思就是:调用node_modules下的jest命令,进行jest的初始化

初始化过程中,依次会询问你:选择运行环境?–> 是否生成覆盖率报告?–> 是否在每次测试完成后,做一些清除?根据需求填yes或者no即可。

jest初始化完成后,会在项目根目录下多出一个jest.config.js文件,文件里的module.exports对象所暴露对象里的配置就是jest的配置项。可以在这里修改jest的配置项。

测试覆盖率

在项目目录下执行:npx jest --coverage 获取测试覆盖率状态

  • 会在终端以表格的形式展示测试覆盖率;
  • 会在项目的根目录下生成一个coverage文件夹,在浏览器打开/coverage/lcov-report/index.html页面,会以网页的形式帮我们分析出每个文件的测试到底覆盖了多少的代码(也就是我们说的覆盖率):

    上图告诉我们,math.js中的所有的代码都被100%测试到了,说明测试覆盖率非常的广。

所以测试覆盖率指的就是:测试代码对我们原来功能性的代码做了百分之多少的测试,这个百分比就叫做代码测试覆盖率。

当我们使用vue或react框架进行开发时,项目中一般用的是ES Module的语法,但jest在node的环境下,不认识ES Module的语法,它只认识CommonJS的模块语法。所以jest也不认识ES Module的语法。但我们可以通过babel工具进行转换,把ES Module的语法转为CommonJS的模块语法,就可以啦。

2. jest和babel结合做语法转换

安装@babel/core 和 @babel/preset-env:

npm  i  @babel/core  @babel/preset-env  -D

创建.babelrc配置文件:

{"presets": [["@babel/preset-env", {"targets": {"node": "current"}}]]
}

当做好babel配置后,运行npm jest时,底层具体执行步骤是这样的:

  • 当运行npm run jest时
  • jest内部集成了一个插件叫 babel-jest
  • 插件会帮我们判断,是否安装了babel/core
  • 如果已经安装了babel/core,就会去拿.babelrc中的一些配置
  • 在运行测试之前,结合babel, 先把你的代码做一次转化 (把ES Module语法转化为可以识别的Commonjs语法)
  • 运行转化过的测试用例代码

做好babel配置后,jest底层会自动的和babel做一个结合,当我们再次执行npm test进行测试时,对于ES Module这种新语法的用户就可以正常执行了。

Jest的使用及配置相关推荐

  1. 【SpringBoot集成ElasticSearch 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(配置+增删改查测试源码)【推荐使用】

    1.简介 SpringBoot 项目初始化时就有 NoSQL 选项 Spring Data Elasticsearch(Access+Driver) 此时 pom 文件里引入的依赖是 spring-b ...

  2. vue3+vite+jest配置 单元测试总结

    一.配置 从0接触单元测试,真的是安装环境,运行demo就折磨了好久,主要是各种版本库的依赖关系,所以安装的时候一定一定要注意安装对应的版本: 我的版本情况 vue@3.2.2 vite@2.5.0 ...

  3. Jest 学习01 - Jest 介绍、快速体验、vscode 智能提示、配置、监视模式、Babel 配置

    起步 测试到底测什么 提到测试的时候,即使是最简单的一个代码块可能都让初学者不知所措.最常问的问题的是"我怎么知道要测试什么?".如果你正在写一个 Web 应用,那么依次测试每个页 ...

  4. Jest测试初学(一)--Jest 的简单配置

    一 生成jest.config.js配置文件 执行安装命令 npx jest --init 然后在工程的根目录下会生成一个jest.config.js文件(这个文件值得细细研究!) 如果想修改测试覆盖 ...

  5. jset编写测试vue代码_使用 Jest 进行 Vue 单元测试

    本文介绍: 1.vue-cli3下jest环境的搭建 2.vue组件基本的测试方法 环境配置 vue-cli3 的插件使安装流程变得格外简单,通过 vue ui 启动可视化管理系统,在插件栏,点击 ' ...

  6. Jest中Mock网络请求

    Jest中Mock网络请求 最近需要将一个比较老的库修改为TS并进行单元测试,修改为TS还能会一点,单元测试纯粹是现学现卖了,初学Jest框架,觉得在单元测试中比较麻烦的就是测试网络请求,所以记录一下 ...

  7. 单元测试 jest 从零开始搭建简易的单元测试

    js.ts使用jest经相单元测试 很多教程,但是可能我这个更加通俗易懂,特写,勿喷. 安装依赖 cnpm install ts-jest jest @types/jest --save-dev 复制 ...

  8. Jest enzyme 进行react单元测试

    下面的文章会默认读者了解 React及其技术栈以及基本的前端单元测试,由于本文涉及到的技术较多,故不宜一一在文中介绍,谅解. 写在前面 在撰写单元测试用例之前,我们需要了解到撰写测试用例的原因.写测试 ...

  9. 提高代码质量——使用Jest和Sinon给已有的代码添加单元测试

    概述 在日常的功能开发中,我们的代码测试都依赖于自己或者QA进行测试.这些操作不仅费时费力,而且还依赖开发者自身的驱动.在开发一些第三方依赖的库时,我们也没有办法给第三方提供完整的代码质量报告. 现在 ...

最新文章

  1. 洛谷 P1049 装箱问题(01背包)
  2. 网络推广专员如何通过社交能力扩宽外链渠道助力网络推广?
  3. 让用户来决定Windows任务管理器的CPU占用率
  4. Fabricjs在Canvas上使用路径Path绘制不规则图形
  5. Lis(bzoj 3532)
  6. IOCP 浅析与实例
  7. linux下装jdk以及failed /usr/local/jdk1.6.0_10/jre/lib/i386/client/libjvm.so,
  8. 记对一个key file crackme的破解
  9. 清华大学《操作系统》(二十三):I/O子系统
  10. linux6无法启动iscsi服务,RHEL6下安装配置ISCSI服务器
  11. 利用Octave解线性方程组
  12. 使用Jenkins打包vue项目丢失静态资源
  13. java深拷贝和浅拷贝
  14. php 中文转拼音(包括部分生僻字)
  15. 台式计算机声音输出方式在哪里,电脑声音无法找到输出设备怎么办?
  16. Android开发之日期、时间选择器(DatePicker和TimePicker)的功能和用法
  17. Python爬取新浪足球数据(以中超为例)
  18. “马赛克”真能去除了?老司机狂喜!这一神器一键去除!
  19. 服务器怒稳定进不了某个网址,登录服务器的一瞬间,让我感觉自己再也不是“菊外人”...
  20. 初学Python案例之一(开平方代码)

热门文章

  1. RPM软件包管理 、Yum软件包仓库
  2. matlab tan的反函数输入
  3. 【Android自定义控件】仿IOS风格的搜索框
  4. android 适配红米,红米5plus适配问题 · Issue #8 · JessYanCoding/AndroidAutoSize · GitHub
  5. HDUOJ_1754_I Hate It_线段树
  6. 第二章 列表、表格与媒体元素
  7. 微信公众平台开发(二)——自定义菜单、模板消息微信素材
  8. 关于Html下拉输入菜单的几个插件
  9. hexo博客的背景设置
  10. OpenCV imread读取图片为空的问题