使用Jest做单元测试

Jest是什么?

Jest is a delightful JavaScript Testing Framework with a focus on simplicity.
It works with projects using: Babel, TypeScript, Node, React, Angular, Vue and more!
Jest是一个关注于简单使用且令人愉悦的JavaScript测试框架,它能够和Babel、TypeScript、Node、React、Angular、Vue等项目配合使用;

起步

  1. 安装jest
npm i -D jest
  1. 通过script开启单元测试
{
   
	"scripts": {
    "test": "jest" }
}
  1. 使用TypeScript和Babel
npm i -D @babel/preset-env @babel/core @babel/preset-typescript npm i -D babel-jest
  1. 配置文件

配置babel.config.js:react和typescript,配置env当process.env.NODE_ENV是test时对.less、.sass、.styl进行忽略避免在jest测试时对样式文件作出响应。

// babel.config.js
module.exports = {
   
  presets: [
    '@babel/preset-env',
    '@babel/preset-typescript',
    '@babel/preset-react'
  ],
  env: {
   
	test: {
   
		plugins: ['babel-plugin-transform-require-ignore', {
   
			extensions: ['.less', '.sass', '.styl']
		}]
	}	
  }
};

配置jest.config.js

module.exports = {
   
    rootDir: './test/', // 测试目录
    // 对jsx、tsx、js、ts文件采用babel-jest进行转换
    transform: {
   
        '^.+\\.[t|j]sx?$': 'babel-jest',
    },
    testRegex: '(/__tests__/.*|(\\.|/)(test|spec))\\.[jt]s?$',
    moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
    collectCoverage: true, // 统计覆盖率
    testEnvironment: 'jsdom', // 测试环境,默认为”jsdom“
    collectCoverageFrom: ['**/*.ts'],
    coverageDirectory: './coverage', // 测试覆盖率的文档
    globals: {
    
        window: {
   }, // 设置全局对象window
    },
    setupFiles: ['<rootDir>/setupFiles/shim.js'], 
    // 测试前执行的文件,主要可以补齐模拟一些在node环境下的方法但又window下需要使用
};

// shim.js
// 在测试环境下模拟requestAnimationFrame函数
global.window.requestAnimationFrame = function (cb) {
   
    return setTimeout(() => {
   
        cb();
    }, 0);
};

编写测试用例

使用Matchers编写测试用例,例如:

test('测试用例名称', () => {
   
	expect(2 + 2).toBe(4);
	expect(2 + 2).not.toBe(3);
	expect({
    one: 1, two: 2 }).toEqual({
    one: 1, two: 2 });
	expect(null).toBeNull();
	expect(null).toBeUndefined();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值