Jak testować moduły w komponentach React za pomocą enzymu?

Jan 21, 2026

Zostaw wiadomość

Dr Emily Carter
Dr Emily Carter
Jako dyrektor ds. Badań zdrowotnych w Asclepius, kieruję naszym zespołem w opracowywaniu najnowocześniejszych proszków z ekstraktów roślin. Z ponad dekadą doświadczenia w chemii produktów naturalnych, pasjonuję się tworzeniem innowacyjnych rozwiązań, które wykorzystują moc przyrody.

Hej, drodzy programiści React! Jeśli pracujesz z komponentami React i modalami, wiesz, jak trudne może być prawidłowe ich przetestowanie. Właśnie tam Enzyme jest bardzo przydatny. I zgadnij co? Jestem dostawcą Enzyme, więc mam kilka świetnych spostrzeżeń, którymi mogę się z Tobą podzielić na temat testowania modali w komponentach React przy użyciu Enzyme.

Po pierwsze, szybko zrozummy, czym jest enzym. Enzyme to narzędzie do testowania JavaScript dla React, które ułatwia sprawdzanie, manipulowanie i przeglądanie danych wyjściowych komponentów React. Zapewnia szereg pomocnych metod testowania komponentów React w bardziej intuicyjny sposób. Jeśli chodzi o moduły w React, chcemy mieć pewność, że otwierają się i zamykają poprawnie, że zawartość wewnątrz jest wyświetlana zgodnie z oczekiwaniami i że wszelkie interakcje z modułami działają zgodnie z zamierzeniami.

Konfigurowanie projektu

Zanim zaczniemy testować moduły, musisz skonfigurować Enzyme w swoim projekcie. Jeśli jeszcze tego nie zrobiłeś, możesz zainstalować go za pomocą npm lub przędzy. Po prostu uruchom następujące polecenie w terminalu:

npm install --save-dev enzym enzym-adapter-reaguj-16

Spowoduje to zainstalowanie Enzyme i adaptera dla React 16. Jeśli używasz innej wersji React, pamiętaj o zainstalowaniu odpowiedniego adaptera.

Po zainstalowaniu Enzyme musisz skonfigurować go w pliku konfiguracyjnym testu. Oto przykład, jak możesz to zrobić:

importuj enzym z „enzym”; importuj adapter z „enzyme-adapter-react-16”; Enzyme.configure({adapter: nowy Adapter() });

Testowanie widoczności modalnej

Jedną z pierwszych rzeczy, które chcemy przetestować w przypadku modalności, jest ich widoczność. Modal powinien się otworzyć po uruchomieniu określonej akcji, na przykład kliknięciu przycisku. Załóżmy, że mamy prosty komponent React z przyciskiem otwierającym moduł:

importuj reakcję, {useState } z „reaguj”; const ModalComponent = () => { const [isModalOpen, setIsModalOpen] = useState(false); const openModal = () => { setIsModalOpen(true); }; return ( <div> <button onClick={openModal}>Otwórz modal</button> {isModalOpen && <div className="modal">To jest modal</div>} </div> ); }; eksportuj domyślny ModalComponent;

Aby sprawdzić, czy modal otwiera się po kliknięciu przycisku, możemy użyć Enzymepłytkimetoda renderowania. Oto kod testowy:

import Reaguj z „reaguj”; importuj {płytkie} z „enzymu”; importuj ModalComponent z './ModalComponent'; opisz('ModalComponent', () => { it('powinien otworzyć moduł modalny po kliknięciu przycisku', () => { const wrapper = shallow(<ModalComponent />); const przycisk = wrapper.find('button'); Button.simulate('click'); oczekiwać(wrapper.find('.modal').exists()).toBe(true); }); });

W tym teście najpierw renderujemy płytkoKomponent modalny. Następnie znajdujemy przycisk za pomocąwrapper.find('przycisk')i symuluj na nim zdarzenie kliknięcia. Na koniec sprawdzamy, czy element modalny ma klasękapitałistnieje na wyjściu komponentu.

Testowanie zawartości modalnej

Po przetestowaniu widoczności modalu możemy również przetestować zawartość wewnątrz modalu. Na przykład, jeśli moduł wyświetla jakieś dane dynamiczne, chcemy się upewnić, że są poprawnie renderowane. Zaktualizujmy naszeKomponent modalnyaby wyświetlić niektóre dane dynamiczne:

importuj reakcję, {useState } z „reaguj”; const ModalComponent = () => { const [isModalOpen, setIsModalOpen] = useState(false); const [modalData, setModalData] = useState('Niektóre dane początkowe'); const openModal = () => { setIsModalOpen(true); }; return ( <div> <button onClick={openModal}>Otwórz modalne</button> {isModalOpen && <div className="modal">{modalData</div>} </div> ); }; eksportuj domyślny ModalComponent;

Napiszmy teraz test, aby sprawdzić, czy zawartość modalna jest poprawna:

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

import Reaguj z „reaguj”; importuj {płytkie} z „enzymu”; importuj ModalComponent z './ModalComponent'; opis('ModalComponent', () => { it('powinien wyświetlić poprawną zawartość modalną', () => { const wrapper = shallow(<ModalComponent />); const przycisk = wrapper.find('button'); przycisk.simulate('click'); oczekiwanie(wrapper.find('.modal').text()).toBe('Niektóre dane początkowe'); }); });

W tym teście postępujemy podobnie jak poprzednio. Płytko renderujemy komponent, klikamy przycisk otwierający modal, a następnie sprawdzamy, czy tekst wewnątrz modalu jest równy oczekiwanym danym.

Testowanie zamknięcia modalnego

Podobnie jak testowanie otwarcia modalu, musimy także przetestować jego funkcjonalność zamykania. Dodajmy przycisk zamykania do naszegoKomponent modalny:

importuj reakcję, {useState } z „reaguj”; const ModalComponent = () => { const [isModalOpen, setIsModalOpen] = useState(false); const [modalData, setModalData] = useState('Niektóre dane początkowe'); const openModal = () => { setIsModalOpen(true); }; const bliskoModal = () => { setIsModalOpen(false); }; return ( <div> <button onClick={openModal}>Otwórz modalne</button> {isModalOpen && ( <div className="modal"> {modalData} <button onClick={closeModal}>Zamknij modalne</button> </div> )} </div> ); }; eksportuj domyślny ModalComponent;

Napiszmy teraz test sprawdzający, czy modal zamyka się po kliknięciu przycisku zamykania:

import Reaguj z „reaguj”; importuj {płytkie} z „enzymu”; importuj ModalComponent z './ModalComponent'; opisz('ModalComponent', () => { it('powinno zamknąć moduł po kliknięciu przycisku zamykania', () => { const wrapper = shallow(<ModalComponent />); const openButton = wrapper.find('button').first(); openButton.simulate('click'); const closeButton = wrapper.find('.przycisk modalny'); zamknijButton.simulate('kliknij'); spodziewaj się(wrapper.find('.modal').exists()).toBe(false } });

W tym teście najpierw otwieramy moduł, klikając przycisk Otwórz. Następnie znajdujemy przycisk zamykania wewnątrz modalu i symulujemy na nim zdarzenie kliknięcia. Na koniec sprawdzamy, czy element modalny już nie istnieje na wyjściu komponentu.

Bardziej złożone testy modalne

Czasami modały mogą być bardziej złożone, z wieloma stanami i interakcjami. Na przykład moduł modalny może zawierać formularz i musimy sprawdzić, czy przesyłanie formularza działa poprawnie. Dodajmy do tego prosty formularzKomponent modalny:

importuj reakcję, {useState } z „reaguj”; const ModalComponent = () => { const [isModalOpen, setIsModalOpen] = useState(false); const [modalData, setModalData] = useState('Niektóre dane początkowe'); const [formData, setFormData] = useState(''); const openModal = () => { setIsModalOpen(true); }; const bliskoModal = () => { setIsModalOpen(false); }; const handleSubmit = (e) => { e.preventDefault(); setModalData(dane formularza); zamknijModalne(); }; 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">Prześlij</button> </form> <button onClick={closeModal}>Zamknij modalne</button> </div> )} </div> ); }; eksportuj domyślny ModalComponent;

Teraz napiszmy test, aby sprawdzić, czy przesłanie formularza aktualizuje dane modalne i zamyka modal:

import Reaguj z „reaguj”; importuj {płytkie} z „enzymu”; importuj ModalComponent z './ModalComponent'; opisz('ModalComponent', () => { it('powinien zaktualizować dane modalne i zamknąć modal po przesłaniu formularza', () => { const wrapper = shallow(<ModalComponent />); const openButton = wrapper.find('button').first(); openButton.simulate('click'); const input = wrapper.find('input'); input.simulate('change', { target: { wartość: 'Nowe dane' } }); const formularz = wrapper.find('formularz'); form.simulate('prześlij', { zapobiegajDefault: () => {} }); oczekuj(wrapper.find('.modal').exists()).toBe(false);

W tym teście najpierw otwieramy moduł, a następnie symulujemy zdarzenie zmiany w polu wejściowym, aby zaktualizować dane formularza. Następnie symulujemy zdarzenie polegające na przesłaniu formularza i sprawdzamy, czy moduł modalny jest zamknięty, a dane modalne są poprawnie zaktualizowane.

Wniosek

Testowanie modalności w komponentach React za pomocą Enzyme może na początku wydawać się nieco trudne, ale gdy już to opanujesz, stanie się to proste. Postępując zgodnie z krokami i przykładami, które tutaj udostępniłem, powinieneś być w stanie skutecznie przetestować moduły i upewnić się, że działają zgodnie z oczekiwaniami.

Jeśli szukasz wysokiej jakości produktów enzymatycznych do swoich potrzeb testowych, nie wahaj sięskontaktuj się z namiaby uzyskać więcej informacji. Jesteśmy tutaj, aby pomóc Ci maksymalnie usprawnić proces testowania.

A jeśli interesują Cię inne produkty, sprawdź te linki:

Referencje

  • Dokumentacja enzymów
  • Dokumentacja biblioteki testującej React
  • Oficjalna dokumentacja React
Wyślij zapytanie