Como testar manipuladores de eventos em componentes React com Enzyme?

Nov 03, 2025

Deixe um recado

Ryan Thompson
Ryan Thompson
Chefe de garantia de qualidade em Asclepius. Garantir que nossos produtos atendam aos mais altos padrões de GMP é minha prioridade. De matérias -primas a produtos acabados, supervisiono todas as etapas para oferecer excelência em pós de extrato de plantas.

Testar manipuladores de eventos em componentes React é um aspecto crucial para garantir a confiabilidade e funcionalidade de seus aplicativos. Enzyme, um utilitário de teste popular para React, fornece um poderoso conjunto de ferramentas para simplificar esse processo. Como fornecedor de enzimas, entendemos os desafios que os desenvolvedores enfrentam quando se trata de testar componentes do React, especialmente manipuladores de eventos. Nesta postagem do blog, exploraremos como testar efetivamente manipuladores de eventos em componentes React usando Enzyme.

Compreendendo os manipuladores de eventos no React

Antes de mergulhar nos testes, é essencial entender o que são manipuladores de eventos no React. Manipuladores de eventos são funções acionadas em resposta a determinados eventos, como cliques, pressionamentos de tecla ou envios de formulários. No React, esses manipuladores são normalmente definidos como métodos dentro de uma classe de componente ou como funções de seta em componentes funcionais.

Aqui está um exemplo simples de um componente React funcional com um manipulador de eventos:

importar React de'react'; const ButtonComponent = () => { const handleClick = () => { console.log('Botão clicado!'); }; return ( <button onClick={handleClick}>Clique em mim</button> ); }; exportar ButtonComponent padrão;

Neste exemplo, oidentificadorClickfunction é um manipulador de eventos que é chamado quando o botão é clicado.

Configurando Enzima para Teste

Para começar a testar manipuladores de eventos com Enzyme, você precisa configurar seu ambiente de teste. Primeiro, certifique-se de ter o Enzyme e seu adaptador instalados em seu projeto. Você pode instalá-los usando npm ou fio:

npm install --save-dev enzima adaptador-reação-16

Em seguida, configure o Enzyme para usar o adaptador apropriado em seu arquivo de configuração de teste. Para React 16, você pode usar o seguinte código:

importar Enzima de 'enzima'; importar adaptador de 'enzyme-adapter-react-16'; Enzyme.configure({ adaptador: novo adaptador() });

Testando manipuladores de eventos com enzima

Agora que seu ambiente de teste está configurado, vamos ver como testar manipuladores de eventos usando Enzyme. Enzyme fornece vários métodos para simular eventos em componentes React, comosimular.

Simulando um evento de clique

Vamos testar oButtonComponentdefinimos anteriormente. Veja como simular um evento de clique e verificar se o manipulador de eventos foi chamado:

importar React de'react'; importar { superficial } de 'enzima'; importar ButtonComponent de './ButtonComponent'; description('ButtonComponent', () => { it('deve chamar handleClick quando o botão for clicado', () => { const wrapper = raso(<ButtonComponent />); const spy = jest.spyOn(wrapper.instance(), 'handleClick'); wrapper.instance().forceUpdate(); wrapper.find('button').simulate('click'); expect(espião).toHaveBeenCalled();

Neste teste, primeiro criamos uma renderização superficial doButtonComponentusando enzimasrasométodo. Então, criamos um espião noidentificadorClickfunção usando Jest'sespionarmétodo. Depois disso, forçamos uma atualização da instância do componente para garantir que o espião esteja conectado corretamente. Por fim, simulamos um evento de clique no botão usando osimularmétodo e verifique se o espião foi chamado.

Testando manipuladores de eventos com argumentos

Às vezes, os manipuladores de eventos podem aceitar argumentos. Por exemplo, considere o seguinte componente:

importar React de'react'; const InputComponent = () => { const handleChange = (event) => { console.log('Valor de entrada alterado:', event.target.value); }; return (<input type="text" onChange={handleChange} /> ); }; exportar InputComponent padrão;

Para testar este componente, precisamos passar um objeto de evento para osimularmétodo. Veja como você pode fazer isso:

importar React de'react'; importar { superficial } de 'enzima'; importar InputComponent de './InputComponent'; description('InputComponent', () => { it('deve chamar handleChange com o valor correto quando a entrada for alterada', () => { const wrapper = raso(<InputComponent />); const spy = jest.spyOn(wrapper.instance(), 'handleChange'); wrapper.instance().forceUpdate(); const event = { target: { value: 'test' } }; wrapper.find('input').simulate('change', event); expect(spy).toHaveBeenCalledWith(event } });

Neste teste, criamos um objeto de evento simulado com umalvopropriedade que contém o novo valor de entrada. Então, passamos este objeto de evento como o segundo argumento para osimularmétodo. Por fim, verificamos queidentificadorChangefunção foi chamada com o objeto de evento correto.

Testando manipuladores de eventos complexos

Em alguns casos, os manipuladores de eventos podem ter lógica complexa, como fazer chamadas de API ou atualizar o estado do componente. Para testar esses tipos de manipuladores de eventos, talvez seja necessário usar técnicas de teste adicionais, como simular dependências externas.

Por exemplo, considere o seguinte componente que faz uma chamada de API quando um botão é clicado:

importar React de'react'; importar axios de 'axios'; const ApiComponent = () => { const handleClick = async () => { tentar { const resposta = aguardar axios.get('https://api.example.com/data'); console.log('Resposta da API:', resposta.data); } catch (erro) { console.error('Erro de API:', erro); } }; return ( <button onClick={handleClick}>Buscar dados</button> ); }; exportar ApiComponent padrão;

Para testar este componente, podemos usar o método de Jesté.mockfunção para zombar doeixosmódulo. Veja como você pode fazer isso:

importar React de'react'; importar { superficial } de 'enzima'; importar ApiComponent de './ApiComponent'; importar axios de 'axios'; jest.mock('axios'); description('ApiComponent', () => { it('deve chamar axios.get quando o botão for clicado', async () => { const wrapper = raso(<ApiComponent />); const spy = jest.spyOn(wrapper.instance(), 'handleClick'); wrapper.instance().forceUpdate(); const mockResponse = { dados: { mensagem: 'Sucesso' } }; axios.get.mockResolvedValue(mockResponse);await wrapper.find('button').simulate('click'); expect(spy).toHaveBeenCalled();

Neste teste, primeiro simulamos oeixosmódulo usandoé.mock. Em seguida, criamos um objeto de resposta simulado e o definimos como o valor resolvido doaxios.getmétodo usandomockResolvedValue. Por fim, simulamos um evento de clique no botão e verificamos se oidentificadorClicka função foi chamada e issoaxios.getfoi chamado com o URL correto.

Conclusão

Testar manipuladores de eventos em componentes React é uma parte importante para garantir a qualidade e a confiabilidade de seus aplicativos. O Enzyme fornece um poderoso conjunto de ferramentas para simplificar esse processo, permitindo simular eventos e verificar se seus manipuladores de eventos estão funcionando conforme o esperado.

Sweet Almond OilNeedle Sponge Extract 97% Purity Sponge Extract Used To Skin Renewal

Como fornecedor de enzimas, oferecemos uma ampla gama de produtos e serviços para ajudá-lo em suas necessidades de testes. Se você estiver interessado em adquirir nossos produtos ou discutir seus requisitos de teste, não hesite em nos contatar para uma negociação de aquisição.

Também oferecemos uma variedade de extratos de ervas que podem ser do seu interesse. Confira nossoPó de extrato de Yucca Rostrata/Yucca Schidigera,Óleo de Amêndoa Doce, eExtrato de esponja de pureza de 97%, extrato de esponja de agulha usado para renovar a pele.

Referências

  • Documentação do React: https://reactjs.org/docs/handling-events.html
  • Documentação da enzima: https://enzymejs.github.io/enzyme/
  • Documentação do Jest: https://jestjs.io/docs/getting-started
Enviar inquérito