Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

246
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 él;

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda