我开始了一个新的反应项目,我想使用 Jest 作为测试平台。尽管有文档、博客和许多其他资源(如 stackoverflow),但我总是遇到可能与 babel 问题有关的“意外令牌导入”错误,但我的 conf 似乎没问题。欢迎任何帮助。
我的 Jest conf(在 package.json 中)。我的 package.json 有 babel-jest、babel-preset-es2015、babel-preset-react 等依赖项。
"jest": {
"testMatch": [
"**/?(*.)spec.js?(x)"
],
"moduleDirectories": [
"src",
"node_modules"
],
"moduleNameMapper": {
"^lib/(.*)$": "<rootDir>/src/lib/$1",
"^components/(.*)": "<rootDir>/src/components/$1",
},
"transform": {
"^.+\\.jsx?$": "babel-jest"
}
我的 .babelrc 配置文件:
{
"presets": [
["es2015", { "modules": false }],
"react"
],
"plugins": [
["react-hot-loader/babel"],
["transform-object-rest-spread", { "useBuiltIns": true }],
["transform-runtime"]
],
"env": {
"test": {
"presets": ["es2015", "react"]
}
}
}
我的规格文件:
import React from 'react';
import Radio from 'components/ui/radio';
...
和 components/ui/radio(第一行出现导入错误):
import Container from './container.jsx';
...
我的 webpack 有两个名为 lib 和 components 的别名(开玩笑地定义为 moduleNameMapper)。
...
resolve: {
mainFiles: ['index', 'main'],
extensions: ['.js', '.jsx'],
alias: {
lib: helpers.getPath('src/lib/'),
components: helpers.getPath('src/components/'),
},
modules: [
helpers.getPath('src'),
helpers.getPath('node_modules'),
],
},
...