Testowanie komponentów w React jest kluczową częścią procesu rozwoju, zapewniając, że aplikacja działa zgodnie z oczekiwaniami i pozostaje stabilna w miarę ewolucji. React.StrictMode to cenne narzędzie, które pomaga zidentyfikować potencjalne problemy w twoich komponentach podczas rozwoju. W tym poście na blogu, jako dostawca enzymów, poprowadzę Cię przez proces testowania komponentów z React.StrictMode za pomocą enzymu.
Zrozumienie React.StrictMode
React.StrictMode to komponent opakowania dostarczany przez React, który aktywuje dodatkowe kontrole i ostrzeżenia dla jego potomków. Nie renderuje żadnego widocznego interfejsu użytkownika; Zamiast tego pomaga znaleźć wspólne błędy i potencjalne problemy w twoich komponentach. Po zawinieniu części aplikacji React.StrictMode, React przeprowadzi dodatkowe kontrole, takie jak wykrywanie starszych metod cyklu życia, ostrzeżenie o niewłaściwym użyciuUsstateIużytkownikhaczyki i identyfikacja nieoczekiwanych skutków ubocznych.
Import reaguje z „React”; const app = () => {return (<reacct.StrictMode> {/ * Twoje komponenty Przejdź tutaj */} </react.StrictMode>); }; Domyślna aplikacja eksportu;
Po co używać enzymu do testowania?
Enzym jest narzędziem do testowania JavaScript dla React, która ułatwia testowanie danych wyjściowych komponentów React. Zapewnia zestaw metod manipulowania, przemierzania i zapytania o wirtualne DOM komponentów React. Dzięki enzymie możesz symulować interakcje użytkownika, stany komponentów testowych i weryfikować renderowane dane wyjściowe. Jako dostawca enzymu mogę potwierdzić jego elastyczność i łatwość użytkowania, co czyni go popularnym wyborem wśród programistów react do testowania.
Konfigurowanie środowiska testowania
Zanim zaczniesz testować swoje komponenty za pomocą React.StrictMode za pomocą enzymu, musisz skonfigurować środowisko testowe. Po pierwsze, musisz zainstalować niezbędne pakiety. Jeśli używasz NPM, możesz uruchomić następujące polecenia:
NPM instalacja-enzym-save-dev enzyme-adapter-reacct-16
Tutaj,enzymto narzędzie testowe,enzym-adapter-reakt-16jest adapterem dla React 16 (może być konieczne dostosowanie wersji zgodnie z wersją React) iReact-Test-Renderersłuży do reagowania komponentów reagowania na czyste obiekty JavaScript.
Następnie musisz skonfigurować enzym, aby użyć adaptera. Możesz to zrobić w pliku instalacyjnym, na przykład,setuptests.js:
Import enzymu z „enzymu”; Adapter importowy z „enzymu-adapter-reacct-16”; Enzyme.configure ({adapter: nowy adapter ()});
Pisanie testów z React.StrictMode i enzymem
Załóżmy, że masz prosty komponent React o nazwiePrzyciskTo renderuje przycisk z pewnym tekstem.
Import reaguje z „React”; const Button = ({text}) => {return <button> {text} </przycisk>; }; Domyślny przycisk Eksportuj;
Teraz napiszmy test dla tego komponentu za pomocą enzymu i React.StrictMode.
Import reaguje z „React”; import {Shallow} z „enzymu”; Przycisk importuj z „./button”; Opisz ('przycisk Component', () => {it ('powinien renderować poprawny tekst', () => {const text = 'kliknij mi'; const opapper = Shallow (<reacct.StrictMode> <przycisk text = {text} /> < /reacct.strictMode>); const button = wrapper.find ('' ''); spodziewaj się (button.Text).
W tym teście używamypłytkimetoda renderowania z enzymu w celu renderowaniaPrzyciskkomponent zapakowanyReact.StrictMode. Następnie znajdujemyprzyciskelement za pomocąznajdowaćMetoda i sprawdź, czy tekst wewnątrz przycisku pasujetekstProp, który minęliśmy.
Testowanie zmian stanu
Enzym pozwala również przetestować zmiany stanu komponentu. Powiedzmy, że masz komponent o nazwieLadama zmienną stanuliczyćoraz przycisk zwiększający liczbę.
Import React, {usestate} z „react”; const liczba = () => {const [count, setCount] = usestate (0); const increment = () => {setCount (count + 1); }; return (<div> <p> count: {count} </p> <przycisk onClick = {increment}> Przyrost </button> </div>); }; Eksportuj domyślny licznik;
Oto jak możesz przetestować zmianę stanu w tym komponencie:
Import reaguje z „React”; import {Mount} z „enzymu”; Importuj licznik z „./counter”; Opisz ('Counter Component', () => {it ('powinien zwiększyć liczbę po kliknięciu przycisku', () => {const opapper = munt (<reacact.strictMode> <fontry /> </eact.strictmode>); const button = wrapper.find ('' '' ''); const inicialCount = parseInt (isfind ('p'). Button.simulat („kliknij”);
W tym teście używamyuchwytmetoda z enzymu, aby renderowaćLadakomponent zapakowanyReact.StrictMode. Następnie znajdujemy przycisk, otrzymujemy początkową wartość liczby, symulować przycisk i sprawdzić, czy liczba została zwiększona.
Testowanie metod cyklu życia
React.StrictMode może pomóc w wykryciu starszych metod cyklu życia w twoich komponentach. Powiedzmy, że masz komponent z dziedzictwemComponentWillReceivePropsmetoda.
import React, {komponent} z „react”; klasa LegacyComponent rozszerza komponent {ComponentWillReceiveProps (NextProps) {// trochę logiki tutaj} render () {return <niv> {this.props.text} </iv>; }} Eksportuj Domyślny LegacyComponent;
Po przetestowaniu tego komponentu z React.StrictMode, React wyda ostrzeżenie o wykorzystaniu starszej metody cyklu życia.
Import reaguje z „React”; import {Shallow} z „enzymu”; importować LegacyComponent z „./LegacyComponent”; Opisz ('LegacyComponent', () => {it ('powinien renderować poprawnie', () => {const text = 'hello'; const opapper = Shallow (<reacct.StrictMode> <LegacyComponent Text = {text} /> < /React.StrictMode>); oczekiwano (oprahent.find ('div').
To ostrzeżenie pomaga zidentyfikować i aktualizować komponenty, aby użyć nowych metod lub haków cyklu życia.

Testowanie haczyków
Jeśli komponent używa haczyków, React.StrictMode może również pomóc w wykryciu potencjalnych problemów. Załóżmy na przykład, że masz niestandardowy hak, który pobiera dane z interfejsu API.
import React, {Usestate, Useeffect} z „react”; const useFetch = (url) => {const [data, setData] = usestate (null); const [ładowanie, setloading] = Usestate (true); Useeffect (() => {const fetchData = async () => {try {const response = czekali na fetch (url); const json = czekaj na odpowiedź return {data, ładowanie}; }; const dataFetcher = ({url}) => {const {data, loading} = użyjki (url); if (ładowanie) {return <p> ładowanie ... </p>; } return <fre> {json.Stringify (data, null, 2)} </re>; }; Eksportuj domyślny dataTFetcher;
Oto jak możesz przetestować ten komponent:
Import reaguje z „React”; import {Mount} z „enzymu”; importować datafetcher z „./datafetcher”; Opisz („DataFetcher Component”, () => {it ('powinien renderować tekst początkowo', () => {const url = 'https://example.com/api/data'; const inripr = mount (<reacct.strictmode> <dataFetcher url = {url}/> </react.Strictmode>); Oczekuj („P”). Text ()). TOBE („Ładowanie ...”);
React.StrictMode zapewni, żeUżyj EFEFECTHaczyk wUseFetchNiestandardowy hak jest prawidłowo wywoływany i że nie ma nieoczekiwanych skutków ubocznych.
Wniosek
Testowanie komponentów z React.StrictMode przy użyciu enzymu jest skutecznym sposobem na zapewnienie jakości i stabilności aplikacji React. React.StrictMode pomaga zidentyfikować potencjalne problemy na początku procesu rozwoju, podczas gdy enzym zapewnia potężny zestaw narzędzi do testowania komponentów. Jako dostawca enzymu zachęcam do włączenia tych praktyk testowych do twojego przepływu pracy.
Jeśli interesuje Cię wysokiej jakości produkty enzymatyczne lub inne powiązane dostawy, oferujemy również szereg produktów, takich jakAsclepius dostarcza wysokiej jakości psicose proszek /D Psicose PowderWNaturalna fosfatydyloseryna 70%, sproszkowana fosfatydyloseryna, ITriglicerydy o średnim łańcuchu. Jeśli masz jakieś pytania lub chcesz omówić potencjalny zakup, nie wahaj się skontaktować z nami w celu uzyskania dalszych szczegółów i rozpoczęcia negocjacji w zakresie zamówień.
Odniesienia
- React Dokumentacja: https://reactjs.org/docs/strtt-mode.html
- Dokumentacja enzymatyczna: https://enzymejs.github.io/enzyme/