Jest

使用

  1. 安装 typescript

  2. 安装 jest

npm i -D jest ts-jest @types/jest 
  1. 创建 jest 配置文件 jest.config.js
module.exports = {
    preset: 'ts-jest',
    testEnvironment: 'node',
    rootDir: 'src'
};
  1. 修改 typescript 配置文件 tsconfig.json
  "compilerOptions": {
      ...
      "esModuleInterop": true
  },
  1. 修改 package.json
{
  ...
  "scripts": {
    "test": "jest"
  }
  ...
}
  1. 编写测试文件

Jest 会自动找到项目中所有使用 .spec.js.test.js 文件命名的测试文件并执行,通常我们在编写测试文件时遵循的命名规范:测试文件的文件名 = 被测试模块名 + .test.js,例如被测试模块为sum.js,那么对应的测试文件命名为 sum.test.js。

sum.ts

export const sum = (a: number, b: number): number => {
    return a + b;
};

sum.test.ts

import { sum } from './sum';

test('adds 1 + 2 to equal 3', () => {
    expect(sum(1, 2)).toBe(3);
});
  1. 运行 jest
npm run test

作用域

describe 与 test

先执行当前文件里的所有 describe 的 handler,然后再执行 test
不要在 describe 的 handler 中准备或释放 test 的执行环境
在 beforeEach afterEach beforeAll afterAll 里面准备或释放 test 的执行环境
这些钩子函数的作用域包括顶层的和 describe 块作用域的
test 按顺序执行,后面的 test 等待前一个 test 执行结束之后才执行
test 的执行顺序就是字面上的前后顺序
如果只有一个测试,使用 test.only,否则会报错

异步

done
return promise
async / await

Mock

.mock

所有的 mock 函数都有 .mock 属性,保存着 mock 函数的调用信息,this 指向以及返回值等信息

假设 myMock 是 mock 函数,myMock.mock.instances 是个数组,保存着每次调用 myMock 函数时候的 this 值

  • myMock.mock.calls:数组,调用信息
  • myMock.mock. results:数组,返回值信息
  • myMock.mock.instances:数组,this 指向,保存着每次调用 myMock 函数时候的 this 值

myMock.mock.calls.length 调用次数
myMock.mock.calls[0] 第一次调用的信息
myMock.mock.calls[0][0] 第一次调用的第一个参数
myMock.mock.calls[0][1] 第一次调用的第二个参数

myMock.mock.results[0].value 第一次调用的返回值

myMock.mock.instances.length 实例化的次数
myMock.mock.instances[0] 第一次实例化时候 this 指向的对象
myMock.mock.instances[0].name 第一次实例化时候 this 指向的对象的 name 属性

你可能感兴趣的:(Jest)