使用 jest 编写测试用例时,如果使用了 import 语句,jest 会以下错误:
SyntaxError: Cannot use import statement outside a module
默认情况下 jest 只支持 commonjs 的模块引入方式,不支持 es6 的模块引入方式。这需要 babel 进行代码转换。
解决步骤
在根目录创建 babel.config.js 和 .babelrc 文件(如果有则更新)
安装 jest,ts-jest,babel-jest,@babel/preset-env 依赖
pnpm i jest ts-jest babel-jest @babel/preset-env
babel.config.js 新增 presets
配置
module.exports = {presets: ['@babel/preset-env']}
jest.config.js 配置如下
module.exports = {
preset: 'ts-jest',
transform: {
'^.+\\.(ts|tsx)?$': 'ts-jest',
'^.+\\.(js|jsx)$': 'babel-jest',
}
};
最后在 package.json 里面新增 script 命令
{
"test": "jest"
}
现在可以通过 pnpm run test 来跑测试用例了。