Test componenti in React è una parte cruciale del processo di sviluppo, garantendo che l'applicazione funzioni come previsto e rimanga stabile man mano che si evolve. React.strictMode è uno strumento prezioso che ti aiuta a identificare potenziali problemi nei tuoi componenti durante lo sviluppo. In questo post sul blog, come fornitore di enzimi, ti guiderò attraverso il processo di test dei componenti con React.strictMode usando l'enzima.
Comprensione della react.strictMode
React.strictMode è un componente wrapper fornito da React che attiva ulteriori controlli e avvertimenti per i suoi discendenti. Non rende alcuna interfaccia utente visibile; Invece, ti aiuta a trovare errori comuni e potenziali problemi nei tuoi componenti. Quando si avvolge una parte della tua applicazione con React.strictMode, React eseguirà ulteriori controlli come rilevare metodi di ciclo di vita legacy, avvertendo sull'uso improprio delUSSTATEEuser -eduttoreganci e identificare effetti collaterali inaspettati.
L'importazione reagisce da "react"; const app = () => {return (<react.strictMode> {/ * I tuoi componenti vanno qui */} </react.strictMode>); }; Esporta app predefinita;
Perché usare l'enzima per i test?
L'enzima è un'utilità di test JavaScript per React che rende più facile testare l'output dei componenti React. Fornisce una serie di metodi per manipolare, attraversare e interrogare il DOM virtuale dei componenti React. Con l'enzima, è possibile simulare le interazioni dell'utente, gli stati dei componenti di prova e verificare l'output rendering. Come fornitore di enzimi, posso attestare la sua flessibilità e facilità d'uso, il che lo rende una scelta popolare tra gli sviluppatori di React per i test.
Impostazione dell'ambiente di test
Prima di iniziare a testare i tuoi componenti con React.strictMode usando l'enzima, è necessario impostare l'ambiente di test. Innanzitutto, dovrai installare i pacchetti necessari. Se stai usando NPM, puoi eseguire i seguenti comandi:
NPM Installa
Qui,enzimaè l'utilità di test,enzima-adattatore-react-16è l'adattatore per react 16 (potrebbe essere necessario regolare la versione in base alla versione react) ereact-test-rendererviene utilizzato per rendere i componenti di reazione agli oggetti JavaScript puri.
Successivamente, è necessario configurare l'enzima per utilizzare l'adattatore. Puoi farlo in un file di configurazione, ad esempio,sepuptests.js:
Importa enzima da "enzima"; Adattatore di importazione da "Enzima-Adapter-React-16"; Enzyme.configure ({adattatore: new adapter ()});
Scrivere test con react.strictMode ed enzima
Supponiamo che tu abbia un semplice componente react chiamatoPulsanteCiò rende un pulsante con un po 'di testo.
L'importazione reagisce da "react"; const pulsante = ({text}) => {return <ball> {text} </button>; }; Pulsante predefinito di esportazione;
Ora, scriviamo un test per questo componente usando enzima e react.strictMode.
L'importazione reagisce da "react"; import {superficiale} da 'enzima'; Pulsante di importazione da './Button'; Descrivi ("Componente Button", () => {it ('dovrebbe rendere il testo corretto', () => {const text = 'Click Me'; const wrapper = superficiale (<react.strictMode> <botton text = {text} /> < /react.strictMode>); const button = wrapper.find ('botton
In questo test, usiamo ilpoco profondoMetodo di rendering dall'enzima per rendere ilPulsantecomponente avvoltoReact.strictMode. Quindi, troviamo ilpulsanteelemento usando ilTrovaremetodo e verificare che il testo all'interno del pulsante corrisponda altestoProp siamo passati.
Test Cambiamenti dello stato del componente
L'enzima consente anche di testare le modifiche allo stato dei componenti. Supponiamo che tu abbia un componente chiamatoContatoreche ha una variabile di statocontaree un pulsante per incrementare il conteggio.
import react, {usestate} da 'react'; const cother = () => {const [count, setCount] = usestate (0); const increment = () => {setCount (count + 1); }; return (<div> <p> conta: {count} </p> <botton onclick = {increment}> increment </ball> </div>); }; Esporta contatore predefinito;
Ecco come testare il cambiamento di stato in questo componente:
L'importazione reagisce da "react"; import {mount} da 'enzyme'; contatore di importazione da './counter'; Descrivi ('Counter Component', () => {it ('dovrebbe incrementare il conteggio quando il pulsante viene cliccato', () => {const wrapper = mount (<react.strictMode> <counter /> < /react.strictMode>); const bottle = wrapper.find ('bottle'); const inizialCount = parseint (wrapper.find ('p'). splie (). Button.Simulate ('Click');
In questo test, usiamo ilmontaremetodo dall'enzima per rendere ilContatorecomponente avvoltoReact.strictMode. Quindi troviamo il pulsante, otteniamo il valore del conteggio iniziale, simuliamo un clic sul pulsante e verifichiamo che il conteggio sia stato incrementato.
Metodi del ciclo di vita dei componenti di prova
React.strictMode può aiutarti a rilevare i metodi del ciclo di vita legacy nei tuoi componenti. Diciamo che hai un componente con un'ereditàcomponentwillreceivepropsmetodo.
import react, {component} da 'react'; Class LegaCyComponent estende componente {componentWillReceiveProps (NextProps) {// Qualche logica qui} render () {return <div> {this.props.text} </div>; }} esportazione predefinita LegacyComponent;
Quando si verifica questo componente con React.strictMode, React emetterà un avvertimento sull'uso del metodo del ciclo di vita legacy.
L'importazione reagisce da "react"; import {superficiale} da 'enzima'; import LegacyComponent da './LegacyComponent'; Descrivi ('LegacyComponent', () => {it ('dovrebbe rendering correttamente', () => {const text = 'Hello'; const wrapper = superficiale (<react.strictMode> <LegacyComponent text = {text} /> < /react.strictMode>); aspettate (wrapper.find ('div'). abe ());
Questo avvertimento ti aiuta a identificare e aggiornare i tuoi componenti per utilizzare i nuovi metodi o ganci del ciclo di vita.

Ganci di test
Se il tuo componente utilizza ganci, React.strictMode può anche aiutarti a rilevare potenziali problemi. Ad esempio, supponiamo che tu abbia un gancio personalizzato che recupera i dati da un'API.
import react, {usestate, useeffect} da 'react'; const us difetch = (url) => {const [data, setData] = usestate (null); const [caricamento, setload] = usestate (true); useeffect (() => {const fetchData = async () => {try {const response = wait fetch (url); const json = awit risposta.json (); setData (json);} catch (errore) {console.error (errore);} infine {setload (false);};} ;fedata (); return {dati, caricamento}; }; const dataFetcher = ({url}) => {const {data, caricamento} = usefetch (url); if (caricamento) {return <p> caricamento ... </p>; } return <pre> {json.stringify (dati, null, 2)} </pre>; }; esportare DataFetcher predefinito;
Ecco come testare questo componente:
L'importazione reagisce da "react"; import {mount} da 'enzyme'; importare datafetcher da './datafetcher'; Descrivi ('DataFetcher Component', () => {it ('dovrebbe rendere il testo di caricamento inizialmente', () => {const url = 'https://example.com/api/data'; const wrapper = mount (<avct.strictMode> <datafetcher url = {url}/> </react.strictMode>); Aspettate (wrapper.find ('p'). text (). tobe ('caricamento ...');
React.strictMode assicurerà che ileffetto usegancio nelusafetchIl gancio personalizzato è chiamato correttamente e che non ci sono effetti collaterali inaspettati.
Conclusione
Test di componenti con react.strictMode usando l'enzima è un modo efficace per garantire la qualità e la stabilità delle applicazioni React. React.strictMode ti aiuta a identificare potenziali problemi all'inizio del processo di sviluppo, mentre l'enzima fornisce una potente serie di strumenti per testare i tuoi componenti. Come fornitore di enzimi, ti incoraggio a incorporare queste pratiche di test nel tuo flusso di lavoro di sviluppo.
Se sei interessato a prodotti enzimatici di alta qualità o altre forniture correlate, offriamo anche una serie di prodotti comeAsclepius fornisce polvere di psicosio psicosio di alta qualità /polvere di psicosio,Fosfatidilserina naturale 70%, fosfatidilserina in polvere, ETrigliceridi a catena media. Se hai domande o desideri discutere un potenziale acquisto, non esitare a contattarci per ulteriori dettagli e ad iniziare una negoziazione sugli appalti.
Riferimenti
- Documentazione react: https://reactjs.org/docs/strict-mode.html
- Documentazione enzimatica: https://enzymejs.github.io/enzyme/