我开始了一个新的React项目,并且想使用Jest作为测试平台。尽管有文档、博客以及像stackoverflow这样的许多其他资源,但我总是会遇到一个"unexpected token import"错误,可能与Babel问题有关,但我的配置似乎没问题。欢迎任何帮助。
我的Jest配置(在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(在 jest 中定义为 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'),
],
},
...