Ric*_*ard 7 javascript node.js jestjs babeljs
我有一个项目,我开始,然后弹出,与react-create-app,我开始编写测试.由于我使用的是最新节点,因此我不需要运行许多测试的babel变换.(这有利于简化回溯).但是,我无法弄清楚如何在运行测试时阻止babel转换我的代码.
在我的package.json我有
{
"scripts": {
"test": "BABEL_ENV=test node --harmony scripts/test.js --env=jsdom"
},
"jest": {
"moduleFileExtensions": [
"jsx",
"js",
"json"
],
"moduleNameMapper": {
"^.+\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$": "<rootDir>/config/jest/FileStub.js",
"^.+\\.css$": "<rootDir>/config/jest/CSSStub.js"
},
"setupFiles": [
"<rootDir>/config/polyfills.js"
],
"testPathIgnorePatterns": [
"<rootDir>/(build|docs|node_modules|scripts)/"
],
"testEnvironment": "node"
}
}
Run Code Online (Sandbox Code Playgroud)
我的.babelrc文件如下所示:
{
"presets": [
["es2015", { "modules": false }],
"react-app"
],
"plugins": [
["transform-class-properties", { "spec": true }],
["transform-flow-strip-types"]
],
"env": {
"test": {
"presets": [
"node7",
"react-app"
],
"plugins": [
["transform-class-properties", { "spec": true }],
["transform-flow-strip-types"]
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
略微修改的test.js文件是:
process.env.NODE_ENV = 'test';
process.env.BABEL_ENV = 'test';
process.env.PUBLIC_URL = '';
require('dotenv').config({ silent: true });
const jest = require('jest');
const argv = process.argv.slice(2);
if (!process.env.CI) {
argv.push('--watch');
}
jest.run(argv);
Run Code Online (Sandbox Code Playgroud)
我认为我误解了babelrc的"env"部分是如何工作的,但我认为设置BABEL_ENV变量会覆盖.babelrc中提供的默认值.我错过了什么?
来自 Jest 文档transform:
默认:
{"\\.[jt]sx?$": "babel-jest"}
因此,如果您什么都不做,Jest 将babel-jest 默认使用.
同样来自Jest 关于 ESM 的文档,项目符号 #1:
确保您通过传递
transform: {}或以其他方式配置转换器以发出 ESM 而不是默认的 CommonJS (CJS) 来禁用代码转换。
因此,您可以通过将 Jest 配置设置为transform空对象来禁用代码转换:
transform: {}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
450 次 |
| 最近记录: |