Como testar modais em componentes React com Enzyme?

Jan 21, 2026

Deixe um recado

Dra. Emily Carter
Dra. Emily Carter
Como diretor de pesquisa de alimentos saudáveis ​​da Asclepius, lidero nossa equipe no desenvolvimento de pós de extrato de vegetais de ponta. Com mais de uma década de experiência em química de produtos naturais, sou apaixonado por criar soluções inovadoras que aproveitam o poder da natureza.

Olá, colegas desenvolvedores do React! Se você trabalha com componentes React e lida com modais, sabe como pode ser complicado testá-los adequadamente. É aí que o Enzyme se torna muito útil. E adivinhe? Sou fornecedor de Enzyme, então tenho ótimos insights para compartilhar com vocês sobre como testar modais em componentes React usando Enzyme.

Primeiramente, vamos entender rapidamente o que é Enzima. Enzyme é um utilitário de teste de JavaScript para React que torna mais fácil afirmar, manipular e percorrer a saída de seus componentes React. Ele fornece vários métodos úteis para testar os componentes do React de uma forma mais intuitiva. Quando se trata de modais no React, queremos ter certeza de que eles abrem e fecham corretamente, que o conteúdo interno é exibido conforme o esperado e que quaisquer interações com o modal funcionam conforme o esperado.

Configurando Seu Projeto

Antes de começarmos a testar os modais, você precisa ter o Enzyme configurado em seu projeto. Se ainda não tiver feito isso, você pode instalá-lo usando npm ou fio. Basta executar o seguinte comando em seu terminal:

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

Isso instalará o Enzyme e o adaptador para React 16. Se você estiver usando uma versão diferente do React, certifique-se de instalar o adaptador apropriado.

Depois de instalar o Enzyme, você precisa configurá-lo em seu arquivo de configuração de teste. Aqui está um exemplo de como você pode fazer isso:

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

Testando a visibilidade modal

Uma das primeiras coisas que queremos testar quando se trata de modais é a sua visibilidade. Um modal deve abrir quando uma ação específica é acionada, como clicar em um botão. Digamos que temos um componente React simples com um botão que abre um modal:

importar React, {useState} de 'react'; const ModalComponent = () => { const [isModalOpen, setIsModalOpen] = useState(false); const openModal = () => { setIsModalOpen(true); }; return ( <div> <button onClick={openModal}>Open Modal</button> {isModalOpen && <div className="modal">Este é um modal</div>} </div> ); }; exportar ModalComponent padrão;

Para testar se o modal abre quando o botão é clicado, podemos usar o Enzyme'srasométodo de renderização. Aqui está o código de teste:

importar React de 'react'; importar { superficial } de 'enzima'; importar ModalComponent de './ModalComponent'; description('ModalComponent', () => { it('deve abrir o modal quando o botão for clicado', () => { const wrapper = raso(<ModalComponent />); const button = wrapper.find('button'); button.simulate('click'); expect(wrapper.find('.modal').exists()).toBe(true); }); });

Neste teste, primeiro renderizamos superficialmente oComponente Modal. Então encontramos o botão usandowrapper.find('botão')e simule um evento de clique nele. Finalmente, verificamos se o elemento modal com a classecapitalexiste na saída do componente.

Testando conteúdo modal

Depois de testarmos a visibilidade do modal, também podemos querer testar o conteúdo dentro do modal. Por exemplo, se o modal exibir alguns dados dinâmicos, queremos ter certeza de que estão sendo renderizados corretamente. Vamos atualizar nossoComponente Modalpara exibir alguns dados dinâmicos:

importar React, {useState} de 'react'; const ModalComponent = () => { const [isModalOpen, setIsModalOpen] = useState(false); const [modalData, setModalData] = useState('Alguns dados iniciais'); const openModal = () => { setIsModalOpen(true); }; return ( <div> <button onClick={openModal}>Open Modal</button> {isModalOpen && <div className="modal">{modalData}</div>} </div> ); }; exportar ModalComponent padrão;

Agora, vamos escrever um teste para verificar se o conteúdo modal está correto:

Squalene Oil/ Squalene 1000mg Soft CapsulesCherry Juice Powder,cherry Extract Powder Supplier Wholesale

importar React de 'react'; importar { superficial } de 'enzima'; importar ModalComponent de './ModalComponent'; description('ModalComponent', () => { it('deve exibir o conteúdo modal correto', () => { const wrapper = raso(<ModalComponent />); const button = wrapper.find('button'); button.simulate('click'); expect(wrapper.find('.modal').text()).toBe('Alguns dados iniciais'); }); });

Neste teste, seguimos um processo semelhante ao anterior. Renderizamos superficialmente o componente, clicamos no botão para abrir o modal e depois verificamos se o texto dentro do modal é igual aos dados esperados.

Testando Fechamento Modal

Assim como testar a abertura do modal, também precisamos testar sua funcionalidade de fechamento. Vamos adicionar um botão Fechar ao nossoComponente Modal:

importar React, {useState} de 'react'; const ModalComponent = () => { const [isModalOpen, setIsModalOpen] = useState(false); const [modalData, setModalData] = useState('Alguns dados iniciais'); const openModal = () => { setIsModalOpen(true); }; const closeModal = () => { setIsModalOpen(false); }; return ( <div> <button onClick={openModal}>Abrir Modal</button> {isModalOpen && ( <div className="modal"> {modalData} <button onClick={closeModal}>Fechar Modal</button> </div> )} </div> ); }; exportar ModalComponent padrão;

Agora, vamos escrever um teste para verificar se o modal fecha quando o botão fechar é clicado:

importar React de 'react'; importar { superficial } de 'enzima'; importar ModalComponent de './ModalComponent'; description('ModalComponent', () => { it('deve fechar o modal quando o botão Fechar for clicado', () => { const wrapper = raso(<ModalComponent />); const openButton = wrapper.find('button').first(); openButton.simulate('click'); const closeButton = wrapper.find('.modal button'); closeButton.simulate('click'); expect(wrapper.find('.modal').exists()).toBe(false } });

Neste teste, primeiro abrimos o modal clicando no botão abrir. Então encontramos o botão Fechar dentro do modal e simulamos um evento de clique nele. Por fim, verificamos se o elemento modal não existe mais na saída do componente.

Testes modais mais complexos

Às vezes, os modais podem ser mais complexos, com múltiplos estados e interações. Por exemplo, um modal pode ter um formulário dentro dele e precisamos testar se o envio do formulário funciona corretamente. Vamos adicionar um formulário simples ao nossoComponente Modal:

importar React, {useState} de 'react'; const ModalComponent = () => { const [isModalOpen, setIsModalOpen] = useState(false); const [modalData, setModalData] = useState('Alguns dados iniciais'); const [formData, setFormData] = useState(''); const openModal = () => { setIsModalOpen(true); }; const closeModal = () => { setIsModalOpen(false); }; const handleSubmit = (e) => { e.preventDefault(); setModalData(formDados); fecharModal(); }; return ( <div> <button onClick={openModal}>Open Modal</button> {isModalOpen && ( <div className="modal"> <form onSubmit={handleSubmit}> <input type="text" value={formData} onChange={(e) => setFormData(e.target.value)} /> <button type="submit">Enviar</button> </form> <button onClick={closeModal}>Fechar Modal</button> </div> )} </div> ); }; exportar ModalComponent padrão;

Agora, vamos escrever um teste para verificar se o envio do formulário atualiza os dados modais e fecha o modal:

importar React de 'react'; importar { superficial } de 'enzima'; importar ModalComponent de './ModalComponent'; description('ModalComponent', () => { it('deve atualizar os dados modais e fechar o modal no envio do formulário', () => { const wrapper = raso(<ModalComponent />); const openButton = wrapper.find('button').first(); openButton.simulate('click'); const input = wrapper.find('input'); input.simulate('change', { target: { value: 'New dados' } }); const form = wrapper.find('form'); form.simulate('submit', { preventDefault: () => {} });

Neste teste, primeiro abrimos o modal e depois simulamos um evento de alteração no campo de entrada para atualizar os dados do formulário. A seguir, simulamos um evento de envio de formulário e verificamos se o modal está fechado e os dados do modal estão atualizados corretamente.

Conclusão

Testar modais em componentes React com Enzyme pode parecer um pouco assustador no início, mas depois que você pega o jeito, fica muito fácil. Seguindo as etapas e exemplos que compartilhei aqui, você poderá testar seus modais de maneira eficaz e garantir que eles funcionem conforme o esperado.

Se você está procurando produtos Enzimáticos de alta qualidade para suas necessidades de testes, não hesite emContate-nospara mais informações. Estamos aqui para ajudá-lo a tornar seu processo de teste o mais tranquilo possível.

E se você estiver interessado em outros produtos, confira estes links:

Referências

  • Documentação de enzimas
  • Documentação da biblioteca de testes React
  • Documentação oficial do React
Enviar inquérito