Solución:
De mi respuesta a otra pregunta, esto puede ser más simple:
El único requisito es configurar su test
entorno a Babel y agregue el complemento de transformación ECMAScript 6:
Paso 1:
Agrega tu test
ambiente a .babelrc
en la raíz de su proyecto:
{
"env": {
"test": {
"plugins": ["@babel/plugin-transform-modules-commonjs"]
}
}
}
Paso 2:
Instale el complemento de transformación ECMAScript 6:
npm install --save-dev @babel/plugin-transform-modules-commonjs
Y eso es. Jest permitirá la compilación de módulos ECMAScript a CommonJS automáticamente, sin tener que informar opciones adicionales a su jest
propiedad dentro package.json
.
ACTUALIZACIÓN 2020: soporte nativo de módulos ECMAScript (ESM)
De acuerdo con este problema, existe soporte nativo de ESM desde [email protected]
. Entonces ya no tendrás que usar babel. Al momento de escribir esta respuesta (05/2020), para activar eso necesitas hacer tres cosas simples:
- Asegúrate de no transformarte
import
declaraciones estableciendotransform: {}
en el archivo de configuración - Correr
[email protected]^12.16.0 || >=13.2.0
con--experimental-vm-modules
bandera - Ejecute su prueba con
jest-environment-node
ojest-environment-jsdom-sixteen
.
Entonces, su archivo de configuración de Jest debe contener al menos esto:
export default {
testEnvironment: 'jest-environment-node',
transform: {}
...
};
Y poner --experimental-vm-modules
flag, tendrá que ejecutar Jest de la siguiente manera:
node --experimental-vm-modules node_modules/jest/bin/jest.js
También tenga en cuenta en el problema de Github que este enfoque aún no es compatible con jest
objeto. Por lo tanto, es posible que deba importarlo manualmente:
import {jest} from '@jest/globals'
(Espero que esto cambie en el futuro)
Para una configuración actualizada, estoy usando https://babeljs.io/setup#installation
Seleccione JEST y sea feliz:
Como referencia, la configuración actual:
npm install --save-dev babel-jest
En tus package.json archivo, realice los siguientes cambios:
{
"scripts": {
"test": "jest"
},
"jest": {
"transform": {
"^.+\.jsx?$": "babel-jest"
}
}
}
Instale el ajuste preestablecido de babel:
npm install @babel/preset-env --save-dev
Crear un .babelrc
expediente:
{
"presets": ["@babel/preset-env"]
}
Ejecute sus pruebas:
npm run test