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

babel是什么?

js发展史

将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所有执行时间会有点变长。

猜你喜欢

转载自blog.csdn.net/qq_30864373/article/details/113064390