TLDR:如何配置jest
,使其使用babel
来编译测试文件和 {{1 }}和globalSetup
?
我一直在努力配置globalTeardown
和jest
。看来,当我运行测试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
相同的配置时,可以运行测试。但是.babelrc
和globalSetup
不能。
答案 0 :(得分:4)
Jest当前不转换globalSetup
和globalTeardown
中定义的模块。公开的GitHub讨论here。
话虽这么说,但在同一线程上有一些解决方法。您必须在babel-register
的顶部需要babel-polyfill
和jest.config.js
。这是完整的实现:https://github.com/facebook/jest/issues/5164#issuecomment-366139663
如果有人使用需要ts-node/register
的TypeScript,则应使其正常工作。 https://github.com/facebook/jest/issues/5164#issuecomment-376006851