Como testar menus suspensos em componentes React com Enzyme?

Nov 07, 2025

Deixe um recado

Chris Evans
Chris Evans
Blogger de alimentos saudáveis ​​e embaixador da marca Asclepius. Compartilho dicas sobre a incorporação de extratos de plantas nas rotinas diárias de bem -estar e reviso os produtos mais recentes da indústria de alimentos saudáveis.

Olá, colegas desenvolvedores do React! Hoje vou falar sobre como testar menus suspensos em componentes React com Enzyme. Como fornecedor de enzimas, vi em primeira mão a importância de testes adequados em projetos React, especialmente quando se trata daqueles incômodos menus suspensos.

Por que testar menus suspensos é importante

Os menus suspensos são um componente de UI comum em aplicativos React. Eles são usados ​​para selecionar opções, filtrar dados e navegar em menus. Mas também podem ser difíceis de acertar. Um pequeno bug em um menu suspenso pode levar a uma experiência ruim do usuário, como opções que não aparecem corretamente ou que o menu suspenso não fecha quando deveria.

É aí que entra o teste. Ao escrever testes para seus menus suspensos, você pode detectar esses bugs no início do processo de desenvolvimento, antes que eles cheguem à produção. E o Enzyme é uma ótima ferramenta para fazer exatamente isso.

Introdução à enzima

Antes de mergulharmos nos menus suspensos de teste, vamos ver rapidamente como configurar o Enzyme em seu projeto React. Se ainda não o fez, você precisará instalar o Enzyme e seu adaptador para React. Você pode fazer isso usando npm ou fio:

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

Depois de instalar o Enzyme, você precisará configurá-lo para funcionar com sua versão do React. No seu arquivo de configuração de teste (geralmentesrc/setupTests.js), adicione o seguinte código:

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

Agora você está pronto para começar a testar!

Testando um menu suspenso simples

Vamos começar testando um componente suspenso simples. Aqui está um exemplo de menu suspenso básico no React:

importar React, {useState} de 'react'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); opções const = ['Opção 1', 'Opção 2', 'Opção 3']; const toggleDropdown = () => { setIsOpen(!isOpen); }; return ( <div> <button onClick={toggleDropdown}>Alternar menu suspenso</button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); }; exportar menu suspenso padrão;

Para testar esse menu suspenso, queremos ter certeza de que clicar no botão alterna a visibilidade da lista de opções. Veja como podemos fazer isso usando Enzyme:

importar React de 'react'; importar { superficial } de 'enzima'; importar menu suspenso de './Dropdown'; descreve('Dropdown', () => { it('deve alternar o menu suspenso quando o botão é clicado', () => { const wrapper = raso(<Dropdown />); const button = wrapper.find('button'); // Inicialmente, o menu suspenso deve ser fechado expect(wrapper.find('ul').exists()).toBe(false); // Clique no botão para abrir o menu suspenso button.simulate('click'); expect(wrapper.find('ul').exists()).toBe(true); // Clique no botão novamente para fechar o menu suspenso button.simulate('click').

Neste teste, usamos primeirorasopara renderizar oSuspensocomponente. Então encontramos o botão usandoencontrare simular um evento de clique usandosimular. Finalmente, usamosexistepara verificar se a lista de opções está visível ou não.

Testando seleção suspensa

Agora vamos dar um passo adiante e testar a seleção de uma opção no menu suspenso. Modificaremos nossoSuspensocomponente para lidar com a seleção de opções:

importar React, {useState} de 'react'; const Dropdown = () => { const [isOpen, setIsOpen] = useState(false); const [selectedOption, setSelectedOption] = useState(null); opções const = ['Opção 1', 'Opção 2', 'Opção 3']; const toggleDropdown = () => { setIsOpen(!isOpen); }; const selectOption = (opção) => { setSelectedOption (opção); setIsOpen(falso); }; return ( <div> <button onClick={toggleDropdown}> {selectedOption ? selectedOption : 'Selecione uma opção'} </button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index} onClick={() => selectOption(option)}> {option} </li> ))} </ul> )} </div> ); }; exportar menu suspenso padrão;

Para testar a seleção da opção, precisaremos simular um clique em uma das opções e verificar se a opção selecionada está atualizada corretamente. Aqui está o teste:

importar React de 'react'; importar { superficial } de 'enzima'; importar menu suspenso de './Dropdown'; descreve('Dropdown', () => { it('deve selecionar uma opção quando clicado', () => { const wrapper = raso(<Dropdown />); const button = wrapper.find('button'); // Abra o menu suspenso button.simulate('click'); // Encontre a primeira opção e clique nela const firstOption = wrapper.find('li').first(); firstOption.simulate('click'); // Verifique se o a opção selecionada é atualizada expect(wrapper.find('button').text()).toBe('Option 1');

Neste teste, primeiro abrimos o menu suspenso clicando no botão. Então encontramos a primeira opção usandoprimeiroe simule um clique nele. Por fim, verificamos se o texto do botão foi atualizado para refletir a opção selecionada.

Testando com menus suspensos mais complexos

Em aplicações do mundo real, os menus suspensos podem ser muito mais complexos do que nossos exemplos simples. Eles podem ter opções aninhadas, estilo personalizado ou carregamento de dados assíncrono. Ao testar esses menus suspensos mais complexos, você precisará adaptar sua estratégia de teste de acordo.

Por exemplo, se o seu menu suspenso tiver opções aninhadas, você precisará testar o comportamento das opções pai e filho. Talvez você também precise usar seletores de enzimas mais avançados para encontrar elementos específicos no menu suspenso.

Se o seu menu suspenso carregar dados de forma assíncrona, você precisará usar técnicas comoassíncrono/aguardarousetTimeoutaguardar o carregamento dos dados antes de executar seus testes. Aqui está um exemplo de teste de um menu suspenso assíncrono:

importar React, { useState, useEffect } de 'react'; const AsyncDropdown = () => { const [isOpen, setIsOpen] = useState(false); const [opções, setOptions] = useState([]); useEffect(() => { const fetchOptions = async () => { const response = await fetch('https://api.example.com/options'); const data = await response.json(); setOptions(data); }; if (isOpen) { fetchOptions(); } }, [isOpen]); const toggleDropdown = () => { setIsOpen(!isOpen); }; return ( <div> <button onClick={toggleDropdown}>Alternar menu suspenso</button> {isOpen && ( <ul> {options.map((option, index) => ( <li key={index}>{option}</li> ))} </ul> )} </div> ); }; exportar AsyncDropdown padrão;
importar React de 'react'; importar { superficial } de 'enzima'; importar AsyncDropdown de './AsyncDropdown'; description('AsyncDropdown', () => { it('deve carregar opções quando o menu suspenso for aberto', async () => { global.fetch = jest.fn(() => Promise.resolve({ json: () => Promise.resolve(['Option 1', 'Option 2', 'Option 3']), }) ); const wrapper = raso(<AsyncDropdown />); const button = wrapper.find('button'); // Abre o menu suspenso button.simulate('click'); // Aguarde o carregamento das opções await wrapper.update();

Neste teste usamosé.fnpara zombar dobuscarAPI e retornar alguns dados de amostra. Em seguida, abrimos o menu suspenso e aguardamos o carregamento das opções usandoaguarde wrapper.update(). Por fim, verificamos se o número correto de opções foi renderizado.

Conclusão

Testar menus suspensos em componentes React com Enzyme é uma parte essencial para garantir a qualidade e confiabilidade de seus aplicativos. Seguindo as técnicas descritas nesta postagem do blog, você pode escrever testes eficazes para menus suspensos simples e complexos.

Se você está procurando produtos Enzimáticos de alta qualidade para suas necessidades de testes, estamos aqui para ajudar. Também oferecemos uma variedade de outros produtos, comoPó farmacêutico da vitamina B12 Cas 13422-55-4 Methylcobalamin da categoria,Preço de fábrica em pó de nano grafeno, eCápsula de óleo de krill.

Se você estiver interessado em adquirir algum de nossos produtos ou tiver alguma dúvida, não hesite em nos contatar para uma discussão sobre compras. Estamos sempre felizes em ajudar!

Krill Oil CapsuleFactory Price Nano Graphene Powder

Referências

  • Documentação da enzima: https://enzymejs.github.io/enzyme/
  • Biblioteca de testes React: https://testing-library.com/docs/react-testing-library/intro/
Enviar inquérito