nodejs使用jest单元测试
目录
前言
对于一个完整的前端工程,单元测试是不可缺少的一部分。但我们之所以很少使用单元测试,是对单元测试的认知不够,所以接下来,我们了解一下什么是单元测试。
单元测试作用:
检测目标是否符合标准而用专业的工具和方法验证,最终得到特定结果。
对于前端开发来讲,特定目标是指代码,工具就是我们需要用到的测试框架(库)、测试用例等。
该教程使用 nodejs typescript jest
步骤?
第一步:引包
通过 ts-jest 使用 TypeScript
npm i jest ts-jest typescript ts-node -D
typescript 可通过 npx tsc --init 初始化 tsconfig.json(非必要)
第二步: 添加到package.json
{
"scripts": {
"test": "jest"
}
}
第三步:jest.config.js 可省略
module.exports = {
// 是否显示覆盖率报告
collectCoverage: true,
};
/* // 覆盖范围 (开启后会在根目录生成 coverage文件夹)
%stmts是语句覆盖率:是不是每个语句都执行了
%Branch分支覆盖率:是不是每个if代码块都执行了
%Funcs函数覆盖率:是不是每个函数都调用了
%Lines行覆盖率:是不是每一行都执行了
Uncovered Line #s:没有执行的代码行
*/
也可以使用 npx jest --init 命令帮我们初始化配置
第四步:babel.config.js
根目录 babel.config.js
module.exports = {
presets: [
["@babel/preset-env", { targets: { node: "current" } }],
"@babel/preset-typescript",
],
};
这里需要再npm引入两个包
npm i @babel/preset-env @babel/preset-typescript -S
第五步:编写测试代码
创建 ts 文件 (注意命名时遵循xxx.test.ts的命名规则)
const sumAdd = (a: Number, b: Number) => {
return Number(a) + Number(b)
}
describe("index.ts", () => {
it("test index", () => {
// toBe 匹配器有种类似于object.is或者===
expect(sumAdd(1, 2)).toBe(3);
});
it("test index NaN", () => {
expect(sumAdd(0, NaN)).toBe(0);
});
});
这里推荐 VSCode 使用一个插件 Jest Runner
第六步:运行测试代码
使用 npm run test 指定文件,
更建议使用上面的 VSCode 插件 运行
jest生命周期钩子
jest提供了一些测试的生命周期API,可以辅助我们在每个case的开始结束做一些处理。列举4个主要的生命周期勾子:
afterAll:当前文件中的所有测试执行完成后执行 fn,如果 fn 是promise,jest 会等待timeout 毫秒,默认 5000
afterEach:每个 test 执行完后执行 fn,timeout 含义同上
beforeAll:同 afterAll,不同之处在于在所有测试开始前执行
beforeEach:同 afterEach,不同之处在于在每个测试开始前执行
参考源码位置:
总结
以上就是关于jest单元测试在nodejs typescript中的使用,有兴趣的建议实际操作一下!