考虑三个方面
- 性能
- 功能
- 易用性
具体体现在
- 速度快 多个模块互相依赖,在第一次运行的时候都会运行,但是后续只会运行真的修改代码的文件
- API简单 API数量少
- 易配置 配置简单
- 隔离性好 测试文件的环境都是隔离的
- 监控模式
- IDE 整合
- Snapshot
- 多项目并行
- 覆盖率 代码报告产生方便
- Mock 丰富 模拟非常方便
- 对于ts、node 等新特性使用得方便
单元测试就是测试一个模块, 集成测试就是多个模块测试
如果要使用jest就一定要引入模块的概念
如果想要在浏览器中使用 module导出的模块可以用 try catch
-
使用 npx jest --init 进行初始化 是测试一个node项目还是一个浏览器项目
-
--converage 生成测试图标
-
安装 @babel/core @balel/preset-env 再做相关的配置
{ "present": [ ["@babel/preset-env", { "targets": { "node": "current" } }] ] }
- babel-core 会取 .babelrc的配置 在运行测试前结果 babel吧代码做一次转化。然后运行转化过的测试用例代码
- toBe 值相同
- toEqual 内容相同
- toBeNull 是否为Null
- toBeUndefined
- toBeDefine 是否定义
- toBeTruthy 是否为真
- toBeFalsy 是否为假
- not 取反
数字相关匹配器
- toBeGreaterThen() 大于
- toBeLessThan() 小于
- toBeGreaterThenEqual() 大于等于
- toBeLessThanEqueal() 小于等于
- toBeCloseTo() 正常js 算小数点是会有不准确的情况, 但是用 这种方式就可以通过
字符串相关匹配器
- toMatch( 正则表达是) 匹配
- toContain(字符串) 数组中包含
异常情况匹配器
- toThrow() 表示我希望它抛出异常
- not.toThrow() 就不会抛出异常
f 仅执行不同的 o 仅执行修改过的文件 并且o模式需要git对文件进行跟踪,跟踪的文件发生改变的时候会进行更新 当前文件的测试 --watch也是走o模式 a 任何测试用例发生了改变会执行全部测试用例 t 根据输入的模式 进行过滤, 只会测试包含模式的测试 p 同上, 不过筛选的是文件
一、 TDD开发流程
- 先编写测试用例
- 运行测试,测试用例无法通过测试
- 编写代码,使测试用例通过测试
- 优化代码,完成开发
- 重复上述流程
二、 TDD的优势
- 长期减少回归bug
- TDD 开发代码质量会更高
- 测试覆盖率高 过高的测试覆盖率会消耗非常高的精力,我们要找到一个平衡点。
- 错误测试代码不容易出现
三、 Snapshot 快照测试
- npx create-react-app my-app
- npm eject 弹射 隐藏配置文件
想要配置jest 需要有npm管理 然后安装
- 安装 enzyme npm i enzyme npm i --save-dev enzyme enzyme-adapter-react-16
-
测试驱动开发
-
什么时候需要做前端自动化测试
对核心功能做前端自动化测试。在做大型项目的时候前端自动化测试很有必要
- 行动驱动开发