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

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

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

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 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