babel6下使用jest单元测试

本文详细介绍如何在ERP项目中引入Jest单元测试,解决因babel版本不匹配导致的问题,并通过独立项目结构避免配置冲突,确保测试环境与生产环境分离。

背景:

  1. 项目中后端api地址虽然做了环境变量配置,但是还是有同学随意更改配置导致测试环境地址发布到生产环境

  2. 为了避免这种情况出现决定引入单元测试,在提交代码之前做一次测试校验

坑:

  1. erp项目使用babel6,jest的babel配置需要babel7, 且无法屏蔽.babelrc配置,哭

    解决方案: jest项目作为一个小项目引入有单独的package.json文件

文件结构:



├── jest                                           	//  jest项目
│   ├── babel.config.js                            	//  babel配置
│   │   ├── ...                              			
│   ├── jest.config.js                           	//  jest配置
│   │   ├── ...                              
│   ├── tests                                  		//  tests文件
│   │   ├── test.js                                 
│   │   package.json  								//  依赖包配置
│   jest.js                                         //  node脚本.gitignore
│   package.json	


配置jest环境

执行yarn global add jest 或者npm install jest --global安装全局jest

执行npm init 初始化项目

执行jest --init初始化jest配置

执行yarn add --dev babel-jest @babel/core @babel/preset-env下载babel依赖

到这一步基础配置都安装好了

babel配置

babel让jest可以支持es6


// babel.config.js
module.exports = {
  presets: [
    [
      '@babel/preset-env',
      {
        targets: {
          node: 'current',
        },
      },
    ],
  ],
};

jest配置

jest配置指定我们需要匹配测试的文件地址

	
// jest.config.js 

module.exports = {
    testMatch: [
        "**/tests/**/*.[jt]s?(x)"                  // 匹配tests文件夹以及子目录下的文件
    ],
}


引入项目

因为jest项目是独立于父项目的, 我们要关联这两个项目

  1. 配置 .gitignore 隐藏 node_modules

    
    # .gitignore
    
    node_modules/
    jest/node_modules/
    
    
  2. npm i shelljs -D 安装shelljs, 使用shelljs 执行jest下的测试文件

    
    // jest.js
    
    const shell = require("shelljs");
    shell.cd('jest')
    shell.exec('jest')
    
    
  3. 配置父项目package.json


# package.json    

"scripts": {
    "jest": "node jest"
}, 


使用

执行node jestnpm run jest 使用


git地址

官网地址

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值