TDD 和 BDD 的区别
从各自的定义分析:TDD 是一种从测试验收层面来推动整个项目开发的技术;BDD 是一种对系统行为进行设计的协作技术。 从参与者来分析:TDD 的参与者是开发和测试之间;BDD 是专注于参与项目协作的每一个人员与用户之间。
单元测试和集成测试的区别
- 单元测试:英文是(unit testing) 单,是指对软件中的最小可测试单元进行检查和验证。前端所说的单元测试就是对一个模块进行测试。也就是说前端测试的时候,你测试的东西一定是一个模块。
- 集成测试:也叫组装测试或者联合测试。在单元测试的基础上,将所有模块按照涉及要求组装成为子系统或系统,进行集成测试。
配置文件
初始化 npx jest --init
生成jest.config.ts
文件
package.json 一些常用 script
"scripts": {
"test": "jest --watchAll",
"coverage":"jest --coverage"
},
让 Jest 支持 import 和 ES6 语法
在 Jest 里有一个 babel-jest 组件,我们在使用 yarn test 的时候,它先去检测开发环境中是否安装了 babel,也就是查看有没有 babel-core,如果有 bable-core 就会去查看.babelrc 配置文件,根据配置文件进行转换,转换完成,再进行测试。yarn add @babel/core@7.4.5 @babel/preset-env@7.4.5 --dev
在.babelrc
中
{
"presets":[
[
"@babel/preset-env",{
"targets":{
"node":"current"
}
}
]
]
}
基本格式
test("测试严格相等", () => {
const a = { number: "007" };
expect(a).toBe({ number: "007" }); // fail
});
全局方法
- 4 个钩子
beforeAll
afterAll
beforeEach
afterEach
test
- concurrent
- each
- only
- skip
- todo
describe
- each
- only
- skip
匹配器
toBe(xx)
toEqual(xx)
toBeNull()
toBeDefined()
需要注意null
也可以通过,只要是 definedtoBeTruthy()
toBeFalsy()
toBeGreaterThan(xx)
toBeLessThan()
toBeGreaterThanOrEqual()
toBeLessThanOrEqual()
toBeCloseTo()
这个是可以自动消除 JavaScript 浮点精度错误的匹配器,举个例子,比如我们让 0.1 和 0.2 相加,这时候 js 得到的值应该是 0.30000000000004,所以如果用 toEqual()匹配器,测试用例会通过不了测试的。toMatch()
字符串包含字符串toContain()
数组包含 itemtoThrow()
专门对异常进行处理的匹配器,可以检测一个 Function 会不会抛出异常
例解not
是 Jest 中比较特殊的匹配器,对其他匹配器进行取反
4 个钩子函数
钩子函数的特点如下
- 钩子函数在父级分组可作用域子集,类似继承
- 钩子函数同级分组作用域互不干扰,各起作用
- 先执行外部的钩子函数,再执行内部的钩子函数
对测试用例分组 describe
describe 可以嵌套
结构:
describe("分组1"),
() => {
test("test1", () => {});
test("test2", () => {});
};
进阶短教程 > 技术框架 > React 单元测试策略及落地
引入 Enzyme
Enzyme 是一个库,用于在测试时处理你的 React 组件。它由 Airbnb 开发