javascript - enzyme
TypeError: environment.setup no es una función en React Testing (6)
Añadir
"jest": {
"testEnvironment": "node"
}
a su archivo package.json, su package.json se vería así:
{
"name": "jest-demo-test",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.2.0",
"react-dom": "^16.2.0",
"react-scripts": "1.0.17"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "jest",
"eject": "react-scripts eject"
},
"devDependencies": {
"jest": "^22.0.4"
},
"jest": {
"testEnvironment": "node"
}
}
ACTUALIZAR
Para las personas que usan la aplicación create y tienen este problema, hay dos soluciones.
1- actualizar el comando de test
(o agregar uno nuevo) en package.json para jest
lugar de react-scripts test
, porque react-scripts test
no permitirá las opciones de jest en package.json como @Xinyang_Li declaró en los comentarios.
2-si no desea cambiar el comando de prueba en package.json, y use la prueba de creación-reacción-aplicación predeterminada; elimina las opciones de jest de packge.json (si existe)
"jest": {
"testEnvironment": "node"
}
luego elimine los node_modules y luego ejecute npm install para instalarlos todos de nuevo, y después de eso, sus pruebas deberían ejecutarse normalmente.
Estaba tratando de implementar el ejemplo que se muestra en el sitio web de Jest: Empezar con Jest .
Mientras ejecutaba la npm test
recibía el siguiente error:
FAIL src/sum.test.js
● Test suite failed to run
TypeError: environment.setup is not a function
at node_modules/jest-runner/build/run_test.js:112:23
sum.js
:
function sum(a, b){
return a+b;
}
module.exports = sum;
sum.test.js
:
const sum = require(''./sum'');
test(''adding sum function'', () => {
expect(sum(234,4)).toBe(238);
})
sum.js
y sum.test.js
son una copia exacta del ejemplo que se muestra en Primeros pasos con Jest .
package.json
:
{
"name": "jest-demo-test",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.2.0",
"react-dom": "^16.2.0",
"react-scripts": "1.0.17"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "jest",
"eject": "react-scripts eject"
},
"devDependencies": {
"jest": "^22.0.4"
}
}
Entonces, ¿cómo puedo deshacerme de TypeError: environment.setup is not a function
error de TypeError: environment.setup is not a function
?
Debería bajar la v20.0.4
instalada a v20.0.4
npm install -D [email protected]
La broma se incluye con los scripts de reacción. El error se debe a un conflicto que surgió cuando instaló Jest en un proyecto iniciado con react-scripts. La guía "Comenzando con Jest" espera un proyecto ''limpio''.
Simplemente quite Jest de sus dependencias (dev) y debería funcionar.
Si desea usar Jest para probar los componentes React (lo que probablemente haga), necesita modificar su script de prueba en package.json
para react-scripts test --env=jsdom
, tal como estaba.
Mi problema se resuelve con esto:
.
Si tiene react-scripts y jest en su package.json, elimine jest de él.
Luego elimine package-lock.json, yarn.lock y node_modules.
Luego ejecuta npm install (o hilo si lo usas). ~ Dan Abramov ~. Problemas # 5119 .
Solo quita la jest
de tus dependencias de desarrollo. Para ello, ejecute el siguiente comando:
npm remove --save-dev jest
Basado en este problema de github: @ jest-environment node no funciona en v22 ,
sum.test.js
el sum.test.js
como:
/**
* @jest-environment node
*/
const sum = require(''./sum'');
test(''adding sum function'', () => {
expect(sum(234,4)).toBe(238);
})
Ahora me deshice de TypeError: environment.setup is not a function
.
Salida:
PASS src/sum.test.js
✓ adding sum function (2ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 0.438s
Ran all test suites.
Actualizado
Leyendo varias respuestas, hoy recreé el escenario.
Paso 1: creé un nuevo proyecto usando create-react-app
.
El comando: create-react-app demo-app
archivo package.json
:
{
"name": "demo-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.3.2",
"react-dom": "^16.3.2",
"react-scripts": "1.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "react-scripts test --env=jsdom",
"eject": "react-scripts eject"
}
}
Este archivo muestra que jest
no está incluido en las dependencias.
Paso 2: sum.test.js
archivos sum.js
y sum.test.js
en la carpeta src
como se muestra en la guía oficial de inicio .
sum.js
:
function sum(a, b) {
return a + b;
}
module.exports = sum;
sum.test.js
:
const sum = require(''./sum'');
test(''adds 1 + 2 to equal 3'', () => {
expect(sum(1, 2)).toBe(3);
});
Paso 3: yarn test
comando yarn test
sin incluir jest
en el archivo package.json
. Entonces, este comando de prueba utiliza react-scripts test --env=jsdom
como se muestra en package.json
.
Salida de la prueba:
PASS src/sum.test.js
PASS src/App.test.js
Test Suites: 2 passed, 2 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 0.594s, estimated 1s
Ran all test suites related to changed files.
Paso 4: package.json
archivo package.json
para usar jest
como script de prueba:
{
"name": "demo-app",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.3.2",
"react-dom": "^16.3.2",
"react-scripts": "1.1.4"
},
"scripts": {
"start": "react-scripts start",
"build": "react-scripts build",
"test": "jest",
"eject": "react-scripts eject"
}
}
Una vez más corrí la yarn test
y la salida es:
$ jest
PASS src/sum.test.js
FAIL src/App.test.js
● Test suite failed to run
/<PATH>/demo-app/src/App.test.js: Unexpected token (7:18)
5 | it(''renders without crashing'', () => {
6 | const div = document.createElement(''div'');
> 7 | ReactDOM.render(<App />, div);
| ^
8 | ReactDOM.unmountComponentAtNode(div);
9 | });
10 |
Test Suites: 1 failed, 1 passed, 2 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 0.645s, estimated 1s
Ran all test suites.
Demasiado largo; No leído (TL; DR)
- No agregue
jest
usando elyarn add --dev jest
onpm install --save-dev jest
si usa el comandocreate-react-app
.jest
se incluye ennode-modules
denode-modules
del proyecto si utilizacreate-react-app
.
De la documentación oficial de Jest :
Configuración con la aplicación Crear React
Si está empezando a utilizar React, le recomendamos que utilice la aplicación Crear React. Está listo para usar y se envía con broma! No necesita realizar ningún paso adicional para la configuración, y puede dirigirse directamente a la siguiente sección.
- No cambie la secuencia de comandos de prueba en el archivo
package.json
{ vea este problema }. Mantenga la"test": "react-scripts test --env=jsdom",
predeterminada"test": "react-scripts test --env=jsdom",
en eso.