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

162
Vistas
Cómo simular el estado y el método establecidos del método de resúmenes protegidos en React Jest

Así se organizan los componentes

 class A extends React.Component { state = {mode: 'create'} abstract getRows() { } abstract getTitle(){ } } class B extends A { getTitle(){ if(this.state.mode === 'create'){ return 'New';} else {return 'Existing'}; } }

Y en caso de prueba:

 jest.mock('componentAFile'); component = shallow(<B />); component.setState({mode: 'create'}); expect(component.instance().getTitle()).toBe('New'); component.setState({mode: 'edit'}); expect(component.instance().getTitle()).toBe('Existing');

Pero el modo de estado dice indefinido. ¿Cuál es la forma correcta de hacer esto? ¿Cómo probamos tales clases que heredan de las clases base?

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

0

Primero, mejor no uses ese enfoque de herencia. La composición es mucho mejor que ni siquiera puedo recordar ningún contra de la herencia.

En segundo lugar, al usar .setState , literalmente está accediendo a datos privados internos. O en otras palabras, "detalles de implementación". Hay tantos casos en los que se rompe repentinamente (propiedad renombrada en this.state , componente de clase refactorizado en función, descompone un componente en varios, etc.), que no hay razón para usarlo.

En tercer lugar, lo mismo ocurre con las pruebas de métodos internos. Nuevamente, son los detalles de implementación, tanto para el nombre, el orden de los argumentos, como para el resultado devuelto. Y además, supongamos que nunca usa esa función en qué componente se procesa en render() . Entonces la prueba pasará, pero el componente podría estar roto.

¿Qué puedes hacer en su lugar?

  1. Proporcione prop( shallow(<B prop1={mockedValue} prop2={anotherValue} />); )
  2. cambiar accesorio( .setProps )
  3. devolución de llamada ( component.find('button').simulate('click') )
  4. validar contra los resultados de representación: expect(component.find('.title').text()).toBe('New')
  5. también es posible que queramos validar si se ha llamado a algún servicio/utilidad externa simulada (pero su caso probablemente no lo necesite; solo quiero tener una lista completa)
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