如果我使用ES6中的import/export
,那么我的所有测试都会失败并出现错误:
意外的保留字
我将我的测试对象转换为使用旧学校IIFY语法,突然我的测试通过了。或者,采用更简单的测试用例:
var Validation = require('../src/components/validation/validation');//PASS
//import * as Validation from '../src/components/validation/validation'//FAIL
同样的错误。显然这里导入/导出存在问题。使用ES5语法重写我的代码只是为了让我的测试框架感到满意是不切实际的。
我有巴贝尔开玩笑。我从github问题尝试了各种suggestions。不行,到目前为止。
"scripts": {
"start": "webpack-dev-server",
"test": "jest"
},
"jest": {
"testPathDirs": [
"__tests__"
],
"testPathIgnorePatterns": [
"/node_modules/"
],
"testFileExtensions": ["es6", "js"],
"moduleFileExtensions": ["js", "json", "es6"]
},
{
"presets": ["es2015", "react"],
"plugins": ["transform-decorators-legacy"]
}
有没有解决这个问题?
这是向你的.babelrc文件中添加stage-0的问题。这是一个例子:
{
"presets": ["es2015", "react", "stage-0"],
"plugins": ["transform-decorators-legacy"]
}
从my answer的另一个问题来看,这可以更简单:
唯一的要求是将您的test
环境配置为Babel,并添加es2015转换插件:
步骤1:
将test
环境添加到项目根目录中的.babelrc
:
{
"env": {
"test": {
"plugins": ["transform-es2015-modules-commonjs"]
}
}
}
第2步:
安装es2015转换插件:
npm install --save-dev babel-plugin-transform-es2015-modules-commonjs
就是这样。 Jest将自动从ES模块到CommonJS进行编译,而无需在jest
内通知package.json
属性的其他选项。
除了安装babel-jest
(现在默认带有jest),请务必安装regenerator-runtime
。
我用.default
解决了它。
试试var Validation = require('../src/components/validation/validation').default;