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

256
Vistas
React Testing Library no puede encontrar mi etiqueta de cierre automático en un fragmento de reacción y solo muestra <body/>

Tengo un componente como este:

 const MyComponent = ({ foo }) => ( <> <div> <Header /> {foo} </div> <div data-testid="self-closing-tag" className={styles.break} /> </> )

(nb React debería manejar el div como una etiqueta de cierre automático, mientras que sin reaccionar eso no es html válido)

Escribí una prueba que representa mi componente <div data-testid="foo" /> para foo prop y ejecuta expect(screen.getByTestId('foo')).toBeInTheDocument(); que pasa Si uso screen.debug en esa prueba, obtengo el DOM completamente renderizado.

Pero cuando escribo una prueba para la etiqueta de cierre automático, así: expect(screen.getByTestId('self-closing-tag')).toHaveClass('break'); Yo obtengo:

No se pudo obtener el elemento por: [data-testid="self-closing-tag"]

y donde esperaría que imprimiera el DOM completamente renderizado, simplemente imprime <body /> .

Si pongo la aserción esperada para la etiqueta de cierre automático en la prueba de 'foo', ambos pasan.

 describe('<My Component />', () => { beforeEach(<MyComponent foo={<div data-testid="foo" />} />); it('renders foo', () => { expect(screen.getByTestId('foo')).toBeInTheDocument(); // expect(screen.getByTestId('self-closing-tag')).toHaveClass('break'); -- this passes if uncommmented! }; it('renders the self closing tag', () => { expect(screen.getByTestId('self-closing-tag')).toHaveClass('break'); // cannot find element, prints '<body />' as the DOM. }) })

Obviamente puedo poner todo en la it declaración, pero prefiero no hacerlo si es posible. También me gustaría entender qué está pasando.

¿Qué he hecho mal?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Eso es porque toHaveClass espera un argumento con el nombre de la clase, puede consultar los documentos aquí .

Entonces, tu prueba podría ser:

 expect(screen.getByTestId("self-closing-tag")).toHaveClass("XX class name you expect XX");

o si solo desea verificar si el elemento tiene la clase de atributo

 expect(screen.getByTestId("self-closing-tag")).toHaveAttribute("class");
about 4 years ago · Juan Pablo Isaza 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