TS 单测工具!ts-jest 和 babel-jest

4,256 阅读1分钟

ts.png

什么是 Jest

JestFacebook 的一套开源的 JavaScript 测试框架, 它自动集成了断言、JSDom、覆盖率报告等开发者所需要的所有测试工具,是一款几乎零配置的测试框架。

TypeScript 的工具体系基本分为:Babel系非Babel系。测试工具也不例外,分为 ts-jestbabel-jest

ts-jest & babel-jest

安装依赖

  • ts-jest
    npm i jest ts-jest @types/jest -D
    
  • ts-babel 在 babel 环境中
    npm i jest babel-jest @babel/core @babel/preset-env @types/jest -D
    
    插播一下:安装 babel-jest,可能会遇到这个报错
    The authenticity of host 'github.com (192.30.255.112)' can't be established
    
    这是少了密钥文件,需要 将密钥添加到 SSH 代理

配置脚本

// package.json
{
  ...
  "scripts": {
    "test": "jest"
  }
}
  • ts-jest 初始化 jest.config.js
    npx ts-jest config:init
    

编写测试用例

// src/math.ts
function add(a: number, b: number): number {
  return a + b;
}

function sub(a: number, b: number): number {
  return a - b;
}
module.exports = { add, sub };
// test/math.test.ts
const math = require("../src/math");

test("add 1+1=2", () => {
  expect(math.add(1, 2)).toBe(3);
});

test("sub 1-2=-1", () => {
  expect(math.sub(1, 2)).toBe(-1);
});

两者差异

ts-jest 在测试文件中,可以检查类型错误,而 babel-jest 不可以,需要 tsc 辅助(新开一个 terminal)。

TypeScript 工程系列