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

141
Vistas
¿Cómo simular un método de ciclo de vida del componente React con Jest y Enzyme?

Los documentos de Enzyme para Full DOM Rendering aquí contienen el siguiente ejemplo de espionaje en un método de ciclo de vida con Sinon:

 describe('<Foo />', () => { it('calls componentDidMount', () => { sinon.spy(Foo.prototype, 'componentDidMount'); const wrapper = mount(<Foo />); expect(Foo.prototype.componentDidMount.calledOnce).to.equal(true); }); });

¿Cuál es el equivalente a esto usando funciones simuladas de Jest?

Estoy usando Create-React-App y preferiría no incluir a Sinon si se puede lograr lo mismo con Jest.

Así es como espero que se vea la prueba:

 describe('<App />', () => { it('calls componentDidMount', () => { jest.fn(App.prototype, 'componentDidMount'); const wrapper = mount(<App />); expect(App.prototype.componentDidMount.mock.calls.length).toBe(1); }); });

En este caso, App.prototype.componentDidMount no hace referencia a la misma función espía que haría con Sinon.

Los documentos de Jest sobre cómo funcionan realmente las funciones simuladas son un poco limitados. He seguido la discusión aquí sobre lo que está haciendo jest.fn(), pero parece que no es realmente equivalente a sinon.spy().

¿Cómo puedo replicar esa prueba con Jest?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Esto no funcionará con jest de esta manera, ya que jest.fn solo tiene un parámetro para la implementación. Pero lo que es más importante, no debe espiar las partes internas del objeto que desea probar. Debería pensar en Foo como una caja negra donde puede poner algunas propiedades y recuperar algunas cosas. Entonces te das cuenta de que no hay necesidad de probar que las funciones internas de Foo , como componentDidMount , sean llamadas. Lo único que importa es la salida de la caja negra.

Pero si realmente quieres, pruébalo de todos modos:

 const spy = jest.fn() const componentDidMount = Foo.prototype.componentDidMount Foo.prototype.componentDidMount = function(){ spy() componentDidMount() }
over 4 years ago · Santiago Trujillo Denunciar

0

A partir de Jest 19, puedes hacer esto:

 describe('<App />', () => { it('calls componentDidMount', () => { const spy = jest.spyOn(App.prototype, 'componentDidMount'); const wrapper = mount(<App />); expect(spy).toHaveBeenCalled(); spy.mockReset(); spy.mockRestore(); }); });

jest.spyOn devuelve una función simulada con todos los métodos normalmente disponibles, como mockClear , mockReset y mockRestore .

Asegúrese de configurar su espía antes de mount con enzima o create con react-test-renderer para que la instancia creada tenga una referencia a la función simulada que se está espiando.

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