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

3.3K
Vistas
TypeError: scrollIntoView no es una función

Soy nuevo en react-testing-library/jest e intento escribir una prueba para ver si la navegación de rutas (usando react-router-dom) se realiza correctamente. Hasta ahora he estado siguiendo el LÉAME y este tutorial sobre cómo usarlo.

Uno de mis componentes usa scrollIntoView en una función local y esto hace que la prueba falle.

 TypeError: this.messagesEnd.scrollIntoView is not a function 45 | 46 | scrollToBottom = () => { > 47 | this.messagesEnd.scrollIntoView({ behavior: "smooth" }); | ^ 48 | } 49 | 50 |

Esta es la función en mi componente de chatbot:

 componentDidUpdate() { this.scrollToBottom(); } scrollToBottom = () => { this.messagesEnd.scrollIntoView({ behavior: "smooth" }); }

Y esta es una muestra de las pruebas que fallan:

 test('<App> default screen', () => { const { getByTestId, getByText } = renderWithRouter(<App />) expect(getByTestId('index')) const leftClick = {button: 0} fireEvent.click(getByText('View Chatbot'), leftClick) <-- test fails expect(getByTestId('chatbot')) })

He intentado usar una función simulada, sin embargo, el error persiste.

Aquí es donde se asigna this.messageEnd:

 <div className="chatbot"> <div className="chatbot-messages"> //render messages here </div> <div className="chatbot-actions" ref={(el) => { this.messagesEnd = el; }}> //inputs for message actions here </div> </div>

Hice referencia al código de esta pregunta de desbordamiento de pila: ¿Cómo desplazarse hacia abajo en reaccionar?

SOLUCIÓN

 test('<App> default screen', () => { window.HTMLElement.prototype.scrollIntoView = function() {}; const { getByTestId, getByText } = renderWithRouter(<App />) expect(getByTestId('index')) const leftClick = {button: 0} fireEvent.click(getByText('View Chatbot'), leftClick) expect(getByTestId('chatbot')) })
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

scrollIntoView no está implementado en jsdom. Aquí está el problema: enlace .

Puede hacer que funcione agregándolo manualmente:

 window.HTMLElement.prototype.scrollIntoView = function() {};
over 4 years ago · Santiago Trujillo Denunciar

0

Si queremos realizar una prueba unitaria de la función 'scrollIntoView' en una aplicación de reacción usando la biblioteca de pruebas de reacción, entonces podemos simular la función usando 'broma'.

 window.HTMLElement.prototype.scrollIntoView = jest.fn()
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