nom*_*oda 6 node.js jestjs babeljs babel-jest
TLDR:我如何配置jest,以便它使用babel编译测试文件,并在需要的所有文件globalSetup和globalTeardown?
我一直在努力配置jest和babel. 似乎当我运行我的测试时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",
}
}
Run Code Online (Sandbox Code Playgroud)
在 babel.config.js 中:
module.exports = (api) => {
if (api) api.cache(true);
const presets = ['@babel/preset-env'];
const plugins = [];
return {
presets,
plugins,
};
};
Run Code Online (Sandbox Code Playgroud)
在 jest.config.js 中:
module.exports = {
globalSetup: './src/config/jest/setup',
globalTeardown: './src/config/jest/teardown',
};
Run Code Online (Sandbox Code Playgroud)
当我运行时npm run test,出现以下错误:
import app from '../../index';
^^^^^^ SyntaxError: Unexpected token import
Run Code Online (Sandbox Code Playgroud)
...我认为这意味着babel未能正确配置。我尝试登录两个配置文件,babel.config.js并且仅在我这样做时运行npm start。
当我使用相同的配置时.babelrc,测试可以运行。然而globalSetup,globalTeardown不能。
Jest 当前不转换globalSetup和 中定义的模块globalTeardown。有一个开放的GitHub的讨论在这里。
话虽如此,在同一线程上有一些解决方法。您必须要求babel-register并babel-polyfill在您的jest.config.js. 这是完整的实现:https : //github.com/facebook/jest/issues/5164#issuecomment-366139663
如果有人正在使用 TypeScript,则需要ts-node/register让它工作。https://github.com/facebook/jest/issues/5164#issuecomment-376006851
| 归档时间: |
|
| 查看次数: |
11386 次 |
| 最近记录: |