Estoy aprendiendo a probar mi JavaScript con Jest . Tengo un proyecto básico que está configurado así:
/ /src myClass.js /tests myClass.test.js package.json
El código se ve así:
miClase.js
export class MyClass { constructor() { this.result = null; } calculate() { this.result = 1; return this.result; } }
miClase.prueba.js
import { MyClass } from '../src/myClass'; test('Calculate', () => { let myObject = new MyClass(); let result = myObject.calculate(); expect(result).toBe(1); });
paquete.json
{ "name": "sample-project", "version": "0.0.1", "type":"module", "scripts": { "dev": "vite", "build": "vite build", "serve": "vite preview", "test": "jest" }, "dependencies": { "vue": "^3.2.16", "vue-router": "^4.0.11" }, "devDependencies": { "@vitejs/plugin-vue": "^1.9.3", "jest": "^27.3.1", "vite": "^2.6.4", "vite-plugin-html": "^2.1.1", "vite-plugin-singlefile": "^0.5.1" } }
Cuando ejecuto mis pruebas usando npm run test
, que solo ejecuta jest
, recibo un error que dice: SyntaxError: Cannot use import statement outside a module
.
¿Qué estoy haciendo mal? ¿Cómo MyClass
de Jest?
Siga las secciones de Babel
en la Guía de inicio de Jest
Simplemente ejecute:
yarn add --dev babel-jest @babel/core @babel/preset-env
y cree un archivo babel.config.js
en el directorio raíz del proyecto con el siguiente contenido:
// babel.config.js module.exports = { presets: [['@babel/preset-env', {targets: {node: 'current'}}]], };
FYI: Jest está utilizando entornos de nodos virtuales debajo del capó. Si no recuerdo mal, la versión más antigua de Node admitida es la 10. Por lo tanto, debe configurar un transformador de código fuente como Babel si desea utilizar las funciones de ES6. ( Fuente )