gpt4 book ai didi

ecmascript-6 - Jest 是否支持 ES6 导入/导出?

转载 作者:行者123 更新时间:2023-12-03 07:51:07 24 4
gpt4 key购买 nike

如果我使用 import/export从 ES6 开始,我所有的 Jest 测试都因错误而失败:

Unexpected reserved word


我将我的测试对象转换为使用老派 IIFE语法,突然我的测试通过了。或者,采用更简单的测试用例:
   var Validation = require('../src/components/validation/validation'); // PASS
//import * as Validation from '../src/components/validation/validation' // FAIL
同样的错误。显然这里的导入/导出存在问题。仅仅为了让我的测试框架满意而使用 ES5 语法重写我的代码对我来说是不切实际的。
我有巴别塔 Jest 。我尝试了各种 suggestions来自 GitHub 问题。到目前为止还没有。
文件包.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 年更新 - 对 ECMAScript 模块 (ESM) 的原生支持

根据this issue ,来自 jest@25.4.0 的 ESM 原生支持.所以你不必再使用 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: {}
    ...
    };
    并设置 --experimental-vm-modules标志,您将必须按如下方式运行 Jest:
    node --experimental-vm-modules node_modules/jest/bin/jest.js
    另请注意,在 Github 问题中,此方法尚不支持 jest目的。所以你可能需要手动导入:
    import {jest} from '@jest/globals'
    (我希望这会在 future 有所改变)

    关于ecmascript-6 - Jest 是否支持 ES6 导入/导出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756479/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com