【问题标题】:Configuring Babel and Jest配置 Babel 和 Jest
【发布时间】:2018-08-14 10:13:52
【问题描述】:

TLDR:如何配置jest,使其使用babel编译测试文件globalSetupglobalTeardown中所需的文件?


我一直在努力配置jestbabel。似乎当我运行我的测试时babel 无法加载配置文件,或者它根本没有运行。

package.json:

{
  "scripts": {
    "start": "babel-node src/index.js",
    "test": "jest src/tests/*.test.js",
  },
  "devDependencies": {
    "@babel/cli": "^7.0.0-rc.1",
    "@babel/core": "^7.0.0-rc.1",
    "@babel/node": "^7.0.0-rc.1",
    "@babel/preset-env": "^7.0.0-rc.1",
    "babel-jest": "^23.4.2",
    "jest": "^23.5.0",
  }
}

babel.config.js:

module.exports = (api) => {
    if (api) api.cache(true);
    const presets = ['@babel/preset-env'];
    const plugins = [];
    return {
        presets,
        plugins,
    };
};

jest.config.js:

module.exports = {
    globalSetup: './src/config/jest/setup',
    globalTeardown: './src/config/jest/teardown',
};

当我运行npm run test 时,出现以下错误:

import app from '../../index';
^^^^^^ SyntaxError: Unexpected token import

...我认为这意味着babel 未能正确配置。我尝试登录两个配置文件,babel.config.js 仅在我执行npm start 时运行。

当我使用与.babelrc 相同的配置时,测试可以运行。但是globalSetupglobalTeardown 不能。

【问题讨论】:

  • 所以当我运行npm start 时,我使用babel-node,它似乎做了一些神奇的编译。我猜我也想在进行开玩笑测试时使用babel-node

标签: node.js babeljs jestjs babel-jest


【解决方案1】:

Jest 目前不转换 globalSetupglobalTeardown 中定义的模块。有一个开放的 GitHub 讨论 here

话虽如此,在同一个线程上有一些解决方法。您必须在 jest.config.js 之上要求 babel-registerbabel-polyfill。这是完整的实现:https://github.com/facebook/jest/issues/5164#issuecomment-366139663

如果有人在使用需要ts-node/register 的 TypeScript,它应该可以工作。 https://github.com/facebook/jest/issues/5164#issuecomment-376006851

【讨论】:

    猜你喜欢
    • 2018-12-29
    • 2023-03-05
    • 2018-05-21
    • 2021-10-29
    • 1970-01-01
    • 2019-12-29
    • 2021-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多