在开发项目中我们经常会看到下面写法
// src/index.jsx
import App from '@/App'
等价于
import App from 'src/App'
如果我们在写单元测试时候引入了别名模块会抛出错误
● Test suite failed to run
Cannot find module '@/App' from 'index.js'
解决办法
在 jest.config.js
配置 moduleNameMapper
字段进行别名应映射
// jest.config.js
module.exports = {
// ...
moduleNameMapper: {
"@/(.*)$": "<rootDir>/src/$1",
}
};
简单介绍下上面字面意思, 这里的key是一个正则表达式, 找到 @/
开头 (.*)
圆括号捕获匹配,$
结束。 value 是一个映射路径, <rootDir>
指向jest根目录, $1
是正则捕获的值。
修改完后记得重新执行测试命令, 我就是执行了 jest --watchAll
调试了老半天~