- npx jest --init 去node_modules里找jest来初始化一个配置文件
jest.config.js
- 配置里设置coverageDirectory: 'coverage’可以生成测试覆盖率报告,
npx jest --coverage
命令 - 代码测试覆盖率:我们编写的测试的代码对我们的功能代码做了多少测试,就是代码测试覆盖率。
- 在node环境使用es6的import和export 是不可以的,所以需要通过babel来进行将es6模块转换成commonJs模块。
- 安装babel
npm install @babel/core @babel/preset-env
- 配置babel:创建
.babelrc
文件 -
{ "presets": [ ["@babel/preset-env", { "targets": { "node": "current" } }] ] }
- 安装babel
2-5
- 测试用例
- 匹配器:比如 toBe就是一个匹配器
每一个修改文件都要重新运行npm run test 是不是太麻烦?
所以在package.json文件中的'test': 'jest'
修改为'test': 'jest --watchAll'
来监听所有,只要一变化就运行test
const a = { one: 1};
expect(a).toBe({one:1});
上面代码的测试用例是不会被通过的,因为引用的地址不一样。
如果只想匹配内容呢?
可以使用toEqual
来匹配内容是否相等。
真假有关的匹配器
toBeNull()
toBeUndefined()
toBeDefined() 判断是否定义
toBeTruthy()
toBeFalsy()
取反的匹配器 not
expect(a).not.toBeFalsy() <=> expect(a).toBeTruthy()
数字相关的匹配器
toBeGreaterThan()
toBeGreaterThanOrEqual()
toBeLessThan()
toBeLessThanOrEqual()
对于小数问题:
和字符串相关的匹配器
toMatch
test('toMatch', () => {
const str = 'benjaminpcm'
expect.toMatch('benjamin'); //里面也可以匹配正则
})
Array、Set
test('toContain', () => {
const arr = ['aa', 'bb', 'cc']
const data = new Set(arr);
expect(data).toContain('aa'); //里面也可以匹配正则
})
异常
2-6 Jest 命令行工具的使用
- code 使用:在vscode 没有打开任何标签的状态下输入
command+shift+p
,然后输入install code command
,这个指令就好被安装到系统变量中,然后同code ./
来打开当前目录 - 运行测试后,如果测试用例出现问题,那么再次运行测试的时候,如果按下f键,那么下次只运行错误的测试用例。
按下w键会展开Watch Usage展开
3. o模式要和git绑定,否则不会知道哪些文件被改动了
4. jest --watch
默认就是O模式,只会运行被改动的文件。
5. t模式,过滤模式。进入t模式,输入想要过滤的内容