配置Babel和Jest

时间:2018-08-14 10:13:53

标签: node.js babeljs jestjs babel-jest

TLDR:如何配置jest,使其使用babel来编译测试文件 {{1 }}和globalSetup


我一直在努力配置globalTeardownjest。看来,当我运行测试babel时,无法加载配置文件,或者根本没有运行。

package.json:

babel

babel.config.js:

{
  "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",
  }
}

jest.config.js:

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

运行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相同的配置时,可以运行测试。但是.babelrcglobalSetup不能。

1 个答案:

答案 0 :(得分:4)

Jest当前不转换globalSetupglobalTeardown中定义的模块。公开的GitHub讨论here

话虽这么说,但在同一线程上有一些解决方法。您必须在babel-register的顶部需要babel-polyfilljest.config.js。这是完整的实现:https://github.com/facebook/jest/issues/5164#issuecomment-366139663

如果有人使用需要ts-node/register的TypeScript,则应使其正常工作。 https://github.com/facebook/jest/issues/5164#issuecomment-376006851