Jest测试框架-让Jest支持ES6语法
Jest测试框架-让Jest支持ES6语法
这是之前的代码:
// 存放业务文件
function web1(money){
return money>=200?"vip":"menber"
}
function web2(money){
return money>=1000?"svip":"glodvip"
}
module.exports={
web1,web2
}
// 存放测试用例
const web= require("./web");
const {web1,web2}=web
test("200vip",()=>{
expect(web1(100)).toBe("vip")
})
test("1000vip",()=>{
expect(web2(2000)).toBe("svip")
})
ES6:
// 存放业务文件
export function web1(money){
return money>=200?"vip":"menber"
}
export function web2(money){
return money>=1000?"svip":"glodvip"
}
import {web1,web2} from './web'
// 只支持commonjs,按照目前运行的话会直接报错的~nodejs不知import语法
// 存放测试用例
test("200vip",()=>{
expect(web1(100)).toBe("vip")
})
test("1000vip",()=>{
expect(web2(2000)).toBe("svip")
})
运行结果:
SyntaxError: Cannot use import statement outside a module at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1350:14)
安装babel,自动装换commonjs
将import 装换为require,后面就可以直接用es6语法
yarn add @babel/core --dev
yarn add @babel/preset-env --dev
安装完babel后,查看一下package.json文件下的devDependencies看看有没有babel
{
"name": "jest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "jest --watchAll"
},
"author": "",
"license": "ISC",
"devDependencies": {
"@babel/core": "^7.12.10",
"@babel/preset-env": "^7.12.11",
"jest": "^26.6.3"
}
}
成功安装后babel还需要一个配置文件.babelrc.json
{
"presets": [
[
"@babel/preset-env",{
"targets":{
"node":"current"
}
}
]
]
}
重新运行yarn test可以正常执行了。
因为Jest下面支持babel-jest,执行yarn test之前先检查package.json有没有安装babel,有的话查找.babelrc.json配置,有的就转换,最后才执行yarn test所有执行时间会有点变长。