| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发测试 -> 快速入门jest单元测试、mock测试、dom测试、快照测试 -> 正文阅读 |
|
[开发测试]快速入门jest单元测试、mock测试、dom测试、快照测试 |
一、单元测试JavaScript 缺少类型检查,编译期间无法定位到错误,单元测试可以帮助你测试多种异常情况。测试可以验证代码的正确性,在上线前做到心里有底。通过 console 虽然可以打印出内部信息,但是这是一次性的事情,下次测试还需要从头来过,效率不能得到保证。通过编写测试用例,可以做到一次编写,多次运行。互联网行业产品迭代速度很快,迭代后必然存在代码重构的过程,那怎么才能保证重构后代码的质量呢?有测试用例做后盾,就可以大胆的进行重构。 简单来说,单元测试做的就是以下事情
即:输入 —— 预期输出 —— 验证结果。 目录 新建src/__test__/delay.spec.js测试文件 1.1 一个Jest Demojest 是facebook开源的一套js测试框架。中文文档:快速开始 · Jest 多刷刷官方文档,官方文档是最好的教程。 Jest 适用但不局限于使用以下技术的项目:Babel,、TypeScript、 Node、 React、Angular、Vue 等。jest规定每个代码里都有一套test目录,这个test目录对应相应的测试函数。test文件夹下某个文件(test.spec.js)与src文件夹下文件同名文件test.js是对应的映射关系。将实际代码与测试文件隔离放置,方便管理维护。 1、新建vue项目 初始化项目,生成package.json文件。 命令:npm init -y 2、安装 Jest 推荐全局安装,jest默认工作在当前工作区的npm 包下 命令:npm i jest -g vscode安装jest类型提示,可以提示jest语法
3、新增加法程序 src/add.js 新建src文件夹,新增add.js文件 const add = (a,b) => a+b; module.exports = add; 4、新增测试类 src同级文件下新增__test__文件夹,并创建同名文件add.spec.js
上面的测试代码就像自然语言说话一样,很舒服。expect 称为断言函数:断定一个真实的结果是期望的结果。很多测试框架都有这个方法。 5、执行jest 直接在当前目录下执行jest,可以将所有的测试用例都执行一遍。 命令:test 1.2 jest断言函数测试即运行结果是否与我们预期结果一致 断言函数用来验证结果是否正确 常用的断言方法 .toBe对值的判断 .toEqual类似于===全等判断
jest分组函数
jest 的钩子函数
jest 钩子函数的作用域describe:把增加相关的代码放到一类分组中,相减的放到另一类分组中,可以使用 describe 分组 ,Jest 默认会在最外层套一个 describe 不要在 describe 中写初始化的代码,避免踩坑,一定要写到钩子函数里 二、异步测试如果测试函数中存在异步操作,且需要异步操作执行完才进行断言结果,单元测试函数需要设置done形参,在定时回调函数中调用。 一个异步测试的demo新建src/delay.js文件函数 delay表示延迟的意思,用延迟执行测试一下异步
新建src/__test__/delay.spec.js测试文件it方法中的done函数表示程序执行结束,以此为标识进行测试
测试命令:jest delay 提升异步测试效率由于异步测试会根据程序中的等待时间而进行等待,可以通过jest.useFakeTimers()方法提升效率。简单来说就是模拟一个时间函数,让时间函数进行一个快进的处理。 更改delay.spec.js
命令:jest delay 可以看到测试时间得到了显著的提示 三、Mock测试vue项目开发中调用其他库信息时,就不是单元测试了。 mock函数相当于制造了一个虚拟函数 一个Mock测试的Demo安装axios 命令:npm i axios -s 新增src/fetch.js
新增src/__test__/fetch.spec.js
测试jest fetch 如果返回的值与预期不符 jest会进行提示,expect期待的值是什么,receive接收到的值是什么 ?jest的fn方法jest.fn()是创建Mock函数最简单的方式,如果没有定义函数内部的实现,jest.fn()会返回undefined作为返回值 在上面异步测试的方法中新增一个测试用例,检测mockFn是否被调用
执行 jest delay后成功 ?如果将mockFn()调用注释掉,执行报错 ?四、Dom测试所谓Dom测试是为了验证前端程序对Dom的操作是否正确。为了测试方便,又不希望在浏览器环境中进行这时就可以在Node环境中进行,但是Node中并没有Dom模型。解决办法就是使用jsdom进行Dom的仿真。 dom.js文件
dom.spec.js测试文件
命令:jest dom jest dom测试结果 直接运行dom测试案例会报错 安装jsdom根据报错提示使用jsdom工具测试Dom元素 命令:npm i jsdom -s 新增jsdom-config.js配置文件
?修改dom.spec.js文件引入jsdom-config.js文件,重新执行测试 命令:jest dom 可以发现测试正常通过 五、快照测试快照测试使用jest的 toMatchSnapshot 匹配器,运行后会在根目录生成一个 __snapshots__ 文件夹。 修改内容后与上次生成的快照进行比较,执行jest --updateSnapshot 或 jest -u 可更新快照 执行toMatchInlineSnapshot 会将快照生成到行内 快照测试其实是将对象实例进行序列化,转成文件的形式进行持久化保存。等到下次测试的时候与之比较。快照测试广泛应用于ui测试。就比如说在前端测试中,可以Dom对象做成快照。每当你想要确保你的UI不会有意外的改变,快照测试是非常有用的工具。典型的做法是在渲染了UI组件之后,保存一个快照文件, 检测他是否与保存在单元测试旁的快照文件相匹配。 若两个快照不匹配,测试将失败:有可能做了意外的更改,或者UI组件已经更新到了新版本。 接下来我们使用快照测试测试Dom元素 新增snapshot.spec.js测试文件
测试命令:test snapshot 执行后可以看到__test__目录下新增了一个snapshots文件。这里就是存放的快照文件 再次测试时快照文件不更新 命令:test snapshot 假设修改dom.js文件中的div类名,再次执行测试可以看到快照测试结果发生了变化。 ?快速入门,你入门了吗 |
|
开发测试 最新文章 |
pytest系列——allure之生成测试报告(Wind |
某大厂软件测试岗一面笔试题+二面问答题面试 |
iperf 学习笔记 |
关于Python中使用selenium八大定位方法 |
【软件测试】为什么提升不了?8年测试总结再 |
软件测试复习 |
PHP笔记-Smarty模板引擎的使用 |
C++Test使用入门 |
【Java】单元测试 |
Net core 3.x 获取客户端地址 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/17 22:14:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |