如果我使用来自import/export的ES6,那么我所有的Jest测试都会出错:
意外保留字
我将被测试的对象转换为使用旧的生平语法,突然我的测试通过了。或者,以一个更简单的测试案例为例:
var Validation = require('../src/components/validation/validation'); // PASS
//import * as Validation from '../src/components/validation/validation' // FAIL同样的错误。很明显,这里的进出口有问题。对于我来说,用ES5语法重写代码并不实用,只是为了让我的测试框架快乐。
我有巴别-杰斯特。我尝试了来自GitHub问题的各种GitHub。还没走远呢。
文件package.json
"scripts": {
"start": "webpack-dev-server",
"test": "jest"
},
"jest": {
"testPathDirs": [
"__tests__"
],
"testPathIgnorePatterns": [
"/node_modules/"
],
"testFileExtensions": ["es6", "js"],
"moduleFileExtensions": ["js", "json", "es6"]
},档案babelrc
{
"presets": ["es2015", "react"],
"plugins": ["transform-decorators-legacy"]
}有解决办法吗?
发布于 2020-05-07 08:03:54
更新2020 -对ECMAScript模块的本地支持
根据本期的说法,jest@25.4.0提供了对ESM的本地支持。这样你就不用再用babel了。在撰写此答复时(05/2020),要激活您需要做三件简单的事情:
import语句来转换transform: {}语句node@^12.16.0 || >=13.2.0标志运行--experimental-vm-modulesjest-environment-node或jest-environment-jsdom-sixteen运行您的测试。因此,Jest配置文件至少应该包含以下内容:
export default {
testEnvironment: 'jest-environment-node',
transform: {}
...
};要设置--experimental-vm-modules标志,您必须按以下方式运行Jest:
node --experimental-vm-modules node_modules/jest/bin/jest.js还请注意,在Github问题中,这种方法还不支持jest对象。因此,您可能需要手动导入它:
import {jest} from '@jest/globals'(我希望这种情况将来会有所改变)
发布于 2018-09-07 14:12:01
从 我的回答 到另一个问题,这可以更简单:
唯一的要求是将您的test环境配置为Babel,并添加ECMAScript 6转换插件:
步骤1:
将test环境添加到项目根目录中的.babelrc:
{
"env": {
"test": {
"plugins": ["@babel/plugin-transform-modules-commonjs"]
}
}
}步骤2:
安装ECMAScript 6转换插件:
npm install --save-dev @babel/plugin-transform-modules-commonjs就是这样。 Jest将自动从ECMAScript模块编译到CommonJS,而不必通知package.json中的jest属性的其他选项。
发布于 2020-01-13 14:08:33
对于更新的配置,我使用https://babeljs.io/setup#installation
选择笑话,然后快乐:
作为参考,当前配置:
npm install --save-dev babel-jest在您的package.json文件中,进行以下更改:
{
"scripts": {
"test": "jest"
},
"jest": {
"transform": {
"^.+\\.jsx?$": "babel-jest"
}
}
}安装babel预置:
npm install @babel/preset-env --save-dev创建一个.babelrc文件:
{
"presets": ["@babel/preset-env"]
}运行您的测试:
npm run testhttps://stackoverflow.com/questions/35756479
复制相似问题