0
点赞
收藏
分享

微信扫一扫

nodejs使用jest单元测试

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中的使用,有兴趣的建议实际操作一下!

举报

相关推荐

0 条评论