Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

347
Vistas
¿Cómo prueba la inexistencia de un elemento usando broma y reaccionar-prueba-biblioteca?

Tengo una biblioteca de componentes para la que estoy escribiendo pruebas unitarias para usar Jest y react-testing-library. En función de ciertos accesorios o eventos, quiero verificar que ciertos elementos no se representen.

getByText , getByTestId , etc. genera un error en react-testing-library si no se encuentra el elemento, lo que hace que la prueba falle antes de que se active la función de expect .

¿Cómo prueba algo que no existe en broma usando la biblioteca de pruebas de reacción?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

De DOM Testing-library Docs - Aparición y desaparición

Los elementos de afirmación no están presentes

Los métodos getBy estándar arrojan un error cuando no pueden encontrar un elemento, por lo que si desea afirmar que un elemento no está presente en el DOM, puede usar las API queryBy en su lugar:

 const submitButton = screen.queryByText('submit') expect(submitButton).toBeNull() // it doesn't exist

La versión de queryAll API devuelve una matriz de nodos coincidentes. La longitud de la matriz puede ser útil para las aserciones después de agregar o eliminar elementos del DOM.

 const submitButtons = screen.queryAllByText('submit') expect(submitButtons).toHaveLength(2) // expect 2 elements

not.toBeInTheDocument

La biblioteca de utilidades jest-dom proporciona el .toBeInTheDocument() , que se puede usar para afirmar que un elemento está en el cuerpo del documento o no. Esto puede ser más significativo que afirmar que el resultado de una consulta es null .

 import '@testing-library/jest-dom/extend-expect' // use `queryBy` to avoid throwing an error with `getBy` const submitButton = screen.queryByText('submit') expect(submitButton).not.toBeInTheDocument()
over 4 years ago · Santiago Trujillo Denunciar

0

Utilice queryBy / queryAllBy .

Como dices, getBy* y getAllBy* arrojan un error si no se encuentra nada.

Sin embargo, los métodos equivalentes queryBy* y queryAllBy* devuelven null o [] :

consulta por

Las consultas queryBy* devuelven el primer nodo coincidente para una consulta y devuelven un null si no coincide ningún elemento. Esto es útil para afirmar un elemento que no está presente. Esto arroja si se encuentra más de una coincidencia (use queryAllBy en su lugar).

queryAllBy queryAllBy* consultas devuelven una matriz de todos los nodos coincidentes para una consulta y devuelven una matriz vacía ( [] ) si ningún elemento coincide.

https://testing-library.com/docs/dom-testing-library/api-queries#queryby

Entonces, para los dos específicos que mencionó, en su lugar usaría queryByText y queryByTestId , pero estos funcionan para todas las consultas, no solo para esos dos.

over 4 years ago · Santiago Trujillo Denunciar

0

getBy* arroja un error cuando no encuentra un elemento, por lo que puede verificarlo

 expect(() => getByText('your text')).toThrow('Unable to find an element');
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda