P.B*_*key 34 ecmascript-6 jestjs babel-jest
如果我使用import/export
ES6,那么我的所有测试都会失败并显示错误:
意外的保留字
我将我的测试对象转换为使用旧学校IIFY语法,突然我的测试通过了.或者,采用更简单的测试用例:
var Validation = require('../src/components/validation/validation');//PASS
//import * as Validation from '../src/components/validation/validation'//FAIL
Run Code Online (Sandbox Code Playgroud)
同样的错误.显然这里导入/导出存在问题.使用ES5语法重写我的代码只是为了让我的测试框架感到满意是不切实际的.
我有巴贝尔开玩笑.我尝试了github问题的各种建议.不行,到目前为止.
"scripts": {
"start": "webpack-dev-server",
"test": "jest"
},
"jest": {
"testPathDirs": [
"__tests__"
],
"testPathIgnorePatterns": [
"/node_modules/"
],
"testFileExtensions": ["es6", "js"],
"moduleFileExtensions": ["js", "json", "es6"]
},
Run Code Online (Sandbox Code Playgroud)
{
"presets": ["es2015", "react"],
"plugins": ["transform-decorators-legacy"]
}
Run Code Online (Sandbox Code Playgroud)
有没有解决这个问题?
Rad*_*uka 61
根据这个问题,有来自jest@25.4.0
. 这样你就不必再使用 babel 了。在撰写此答案时 (05/2020),要激活您需要做三件简单的事情:
import
通过transform: {}
在配置文件中设置来转换语句node@^12.16.0 || >=13.2.0
带--experimental-vm-modules
旗奔跑jest-environment-node
或运行您的测试jest-environment-jsdom-sixteen
。所以你的 Jest 配置文件至少应该包含以下内容:
export default {
testEnvironment: 'jest-environment-node',
transform: {}
...
};
Run Code Online (Sandbox Code Playgroud)
要设置--experimental-vm-modules
标志,您必须按如下方式运行 Jest:
node --experimental-vm-modules node_modules/jest/bin/jest.js
Run Code Online (Sandbox Code Playgroud)
另请注意,在 Github 问题中,此方法尚不支持该jest
对象。所以你可能需要手动导入它:
import {jest} from '@jest/globals'
Run Code Online (Sandbox Code Playgroud)
(我希望这会在未来改变)
Pau*_*ica 32
根据我对另一个问题的回答,这可以更简单:
唯一的要求是将您的test
环境配置为Babel,并添加es2015转换插件:
步骤1:
将您的test
环境添加到.babelrc
项目的根目录中:
{
"env": {
"test": {
"plugins": ["@babel/plugin-transform-modules-commonjs"]
}
}
}
Run Code Online (Sandbox Code Playgroud)
第2步:
安装es2015转换插件:
npm install --save-dev @babel/plugin-transform-modules-commonjs
Run Code Online (Sandbox Code Playgroud)
就是这样.Jest将自动从ES模块到CommonJS进行编译,而无需在内部通知您的jest
属性的其他选项package.json
.
Laz*_*ima 18
对于更新的配置,我正在使用 https://babeljs.io/setup#installation
选择 JEST 并高兴:
作为参考,当前配置:
npm install --save-dev babel-jest
Run Code Online (Sandbox Code Playgroud)
在package.json文件中,进行以下更改:
{
"scripts": {
"test": "jest"
},
"jest": {
"transform": {
"^.+\\.jsx?$": "babel-jest"
}
}
}
Run Code Online (Sandbox Code Playgroud)
安装 babel 预设:
npm install @babel/preset-env --save-dev
Run Code Online (Sandbox Code Playgroud)
创建一个.babelrc
文件:
{
"presets": ["@babel/preset-env"]
}
Run Code Online (Sandbox Code Playgroud)
运行你的测试:
npm run test
Run Code Online (Sandbox Code Playgroud)
在 中package.json
,请像这样设置:"test": "node --experimental-vm-modules node_modules/.bin/jest"
应该不错!
归档时间: |
|
查看次数: |
15047 次 |
最近记录: |