Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

549
Views
Cómo probar un nombre de clase con la biblioteca de pruebas Jest y React

Soy totalmente nuevo en las pruebas de JavaScript y estoy trabajando en una nueva base de código. Me gustaría escribir una prueba que busque un nombre de clase en el elemento. Estoy trabajando con Jest y React Testing Library . A continuación, tengo una prueba que generará un botón basado en la variant de apoyo. También contiene un nombre de clase y me gustaría probarlo.

 it('Renders with a className equal to the variant', () => { const { container } = render(<Button variant="default" />) expect(container.firstChild) // Check for className here })

Traté de buscar en Google una propiedad como la que tiene Enzyme con hasClass , pero no pude encontrar nada. ¿Cómo puedo resolver esto con las bibliotecas actuales ( React Testing Library y Jest)?

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Puede hacerlo fácilmente con react-testing-library.

Primero, debe comprender que el container o el resultado de getByText , etc., son simplemente nodos DOM. Puede interactuar con ellos de la misma manera que lo haría en un navegador.

Entonces, si desea saber qué clase se aplica a container.firstChild , puede hacerlo así container.firstChild.className .

Si lees más sobre className en MDN verás que devuelve todas las clases aplicadas a tu elemento separadas por un espacio, es decir:

 <div class="foo"> => className === 'foo' <div class="foo bar"> => className === 'foo bar'

Esta podría no ser la mejor solución dependiendo de su caso. No se preocupe, puede usar otra API de navegador, por ejemplo,classList .

 expect(container.firstChild.classList.contains('foo')).toBe(true)

¡Eso es todo! No es necesario aprender una nueva API que solo funciona para pruebas. Es como en el navegador.

Si verificar una clase es algo que hace con frecuencia, puede facilitar las pruebas agregando jest-dom a su proyecto.

La prueba entonces se convierte en:

 expect(container.firstChild).toHaveClass('foo')

Hay muchos otros métodos prácticos como toHaveStyle que podrían ayudarte.


Como nota al margen, react-testing-library es una utilidad de prueba de JavaScript adecuada. Tiene muchas ventajas sobre otras bibliotecas. Te animo a unirte al foro de espectro si eres nuevo en las pruebas de JavaScript.

over 4 years ago · Santiago Trujillo Report

0

La biblioteca da acceso a los selectores DOM normales, por lo que también podemos simplemente hacer esto:

 it('Renders with a className equal to the variant', () => { const { container } = render(<Button variant="default" />) expect(container.getElementsByClassName('default').length).toBe(1); });
over 4 years ago · Santiago Trujillo Report

0

Debe comprender la filosofía detrás de la biblioteca de pruebas de reacción para comprender lo que puede hacer y lo que no puede hacer con ella;

El objetivo detrás de react-testing-library es que las pruebas eviten incluir detalles de implementación de sus componentes y, más bien, se centren en escribir pruebas que le brinden la confianza para la que están destinadas.

Por lo tanto, consultar el elemento por nombre de clase no está alineado con la filosofía de la biblioteca de pruebas de reacción, ya que incluye detalles de implementación. El nombre de clase es el detalle real de implementación de un elemento y no es algo que el usuario final verá, y está sujeto a cambios en cualquier momento del ciclo de vida del elemento.

Entonces, en lugar de buscar elementos por lo que el usuario no puede ver, y algo que puede cambiar en cualquier momento, simplemente intente buscar usando algo que el usuario pueda ver, como texto, etiqueta o algo que permanecerá constante en el ciclo de vida del elemento. como identificación de datos.

Entonces, para responder a su pregunta, no se recomienda probar classname y, por lo tanto, no puede hacerlo con react-testing-library . Pruebe con otras bibliotecas de prueba como Enzyme o react-dom test utils .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!