Tengo esta prueba simple:
import React from 'react' import { render } from '@testing-library/react' import Button from '.' describe('Button', () => { it('renders button without crashing', () => { const label = 'test' render(<Button label={label} />) }) }) Y tengo un jest.config.json con este contenido
{ "setupFilesAfterEnv": [ "<rootDir>/lib/settings/setupTests.ts" ] } Y en mi setupTests.ts tengo
import '@testing-library/jest-dom' Cuando ejecuto npm run test (que solo ejecuta jest ), recibí el siguiente error:
El siguiente error puede deberse al uso de un entorno de prueba incorrecto, consulte https://jestjs.io/docs/configuration#testenvironment-string .
Considere usar el entorno de prueba "jsdom".
¿Que estoy haciendo mal? Esto solía funcionar antes de una actualización.
Esto se puede resolver por archivo de prueba agregando un docblock @jest-environment al comienzo de su archivo. Por ejemplo:
/** @jest-environment jsdom */ import React from 'react' import { render } from '@testing-library/react' import Button from '.' describe('Button', () => { it('renders button without crashing', () => { const label = 'test' render(<Button label={label} />) }) }) Si su proyecto tiene una combinación de archivos UI y no UI, a menudo es preferible cambiar todo el proyecto configurando "testEnvironment": "jsdom" dentro de su paquete.json o Jest config. Al omitir la inicialización del entorno JSDom para pruebas que no son de interfaz de usuario, Jest puede ejecutar sus pruebas más rápido. De hecho, es por eso que Jest cambió el entorno de prueba predeterminado en Jest 27 .
En su package.json , o jest.config.js / jest.config.js , cambie el valor de la propiedad testEnvironment a jsdom .
"jest":{ "testEnvironment": "jsdom" } { "testEnvironment": "jsdom" } Por defecto, jest usa el node testEnvironment. Básicamente, esto hace que cualquier prueba destinada a un entorno de navegador no sea válida.
jsdom es una implementación de un entorno de navegador que admite este tipo de pruebas de interfaz de usuario.