Testarea componentelor în React este o parte crucială a procesului de dezvoltare, asigurându -se că aplicația dvs. funcționează așa cum este de așteptat și rămâne stabilă pe măsură ce evoluează. React.strictMode este un instrument valoros care vă ajută să identificați probleme potențiale în componentele dvs. în timpul dezvoltării. În această postare pe blog, în calitate de furnizor de enzime, vă voi ghida prin procesul de testare a componentelor cu React.StrictMode folosind Enzyme.
Înțelegerea React.strictMode
React.strictMode este o componentă de înveliș oferită de React care activează verificări și avertismente suplimentare pentru urmașii săi. Nu redă niciun UI vizibil; În schimb, vă ajută să găsiți greșeli comune și probleme potențiale în componentele dvs. Când înfășurați o parte a aplicației dvs. cu React.strictMode, React va efectua verificări suplimentare, cum ar fi detectarea metodelor de ciclu de viață moștenită, avertizând despre utilizarea necorespunzătoare aUSStateşiutilizatorcârlige și identificarea efectelor secundare neașteptate.
import reacționează de la „React”; const app = () => {return (<React.StricTMode> {/ * Componentele dvs. merg aici */} </react.strictMode>); }; Aplicație implicită la export;
De ce să folosești enzima pentru testare?
Enzima este o utilitate de testare JavaScript pentru React, care facilitează testarea ieșirii componentelor React. Oferă un set de metode pentru a manipula, traversa și interoga DOM -ul virtual al componentelor React. Cu enzima, puteți simula interacțiunile utilizatorilor, statele componente de testare și puteți verifica ieșirea redată. În calitate de furnizor de enzime, pot atesta flexibilitatea și ușurința de utilizare a acestuia, ceea ce îl face o alegere populară în rândul dezvoltatorilor React pentru testare.
Configurarea mediului de testare
Înainte de a începe testarea componentelor cu React.StricTMode folosind Enzyme, trebuie să vă configurați mediul de testare. În primul rând, va trebui să instalați pachetele necesare. Dacă utilizați NPM, puteți rula următoarele comenzi:
Instalare NPM-Enzimă enzimatică-Save-Dev-Enzimă-Adapter-React-16 React-Test-Render
Aici,enzimăeste utilitatea de testare,Enzimă-Adapter-React-16este adaptorul pentru React 16 (poate fi necesar să ajustați versiunea în funcție de versiunea dvs. React) șiREACT-TEST-RENDEReste utilizat pentru a reda componentele React la obiecte pure JavaScript.
În continuare, trebuie să configurați enzima pentru a utiliza adaptorul. Puteți face acest lucru într -un fișier de configurare, de exemplu,setuptests.js:
import enzimă din „enzimă”; adaptor de import din „enzime-adapter-reacție-16”; Enzyme.configure ({adapter: nou adapter ()});
Scrierea testelor cu React.strictMode și enzimă
Să presupunem că aveți o componentă React simplă numităButonAsta face un buton cu un text.
import reacționează de la „React”; const buton = ({text}) => {return <buton> {text} </utton>; }; butonul implicit de export;
Acum, să scriem un test pentru această componentă folosind Enzima și React.StrictMode.
import reacționează de la „React”; Import {Shallow} din „enzime”; buton de import de la „./button”; descrieți ('button component', () => {it ('ar trebui să redați textul corect', () => {const text = 'Faceți clic pe mine'; const Wrapper = Shallow (<React.StricTMode> <Button text = {Text} /> </rect.strictMode>); const buton = wrapper.find ('buton'); });
În acest test, folosimsuperficialMetoda de redare de la enzimă pentru a redaButoncomponentă înfășuratăReact.strictMode. Apoi, găsimbutonelement folosindgăsimetoda și verificați dacă textul din interiorul butonului se potrivește cutextProp am trecut.
Testarea modificărilor statului componentei
Enzima vă permite, de asemenea, să testați modificările statului componentelor. Să zicem că aveți o componentă numităContracare are o variabilă de statcontași un buton pentru creșterea numărului.
import reacție, {usestate} din 'reacție'; const contor = () => {const [count, setCount] = usestate (0); const increment = () => {setCount (count + 1); }; return (<div> <p> count: {count} </p> <buton onClick = {increment}> increment </buton> </div>); }; Export implicit contor;
Iată cum puteți testa schimbarea de stat în această componentă:
import reacționează de la „React”; import {mount} din 'enzime'; Import contor de la „./counter”; descrie ('contor component', () => {it ('ar trebui să crească numărul atunci când butonul este clic pe', () => {const wrapper = mount (<reac.strictMode> <contor /> < /reacT.strictMode>); const buton = wrapper.find ('buton'); const inițialcount = parseint (wrapper.find ('p'); text (). ') [1], 10);
În acest test, folosimmuntemetoda de la enzimă pentru a redaContracomponentă înfășuratăReact.strictMode. Apoi găsim butonul, obținem valoarea inițială a numărului, simulăm un clic pe buton și verificăm dacă numărul a fost incrementat.
Testarea metodelor ciclului de viață ale componentelor
React.strictMode vă poate ajuta să detectați metodele de ciclu de viață moștenite în componentele dvs. Să zicem că aveți o componentă cu moștenireComponentWillReceivePropsmetodă.
import reacție, {component} din 'React'; Class LegacyComponent extinde componenta {componentWillReceiveProps (NextProps) {// o logică aici} render () {return <div> {this.props.text} </div>; }} export implicit LegacyComponent;
Când testați această componentă cu React.StricTMode, React va emite un avertisment despre utilizarea metodei ciclului de viață moștenitor.
import reacționează de la „React”; Import {Shallow} din „enzime”; import LegacyComponent din './legacyComponent'; descrieți ('LegacyComponent', () => {it ('ar trebui să redați corect', () => {const text = 'hello'; const wrapper = halpelow (<reacT.strictMode> <LegacyComponent Text = {text} /> </rect.strictMode>); se așteaptă (wrapper.find ('div: text ()).
Acest avertisment vă ajută să vă identificați și să actualizați componentele pentru a utiliza noile metode sau cârlige pentru ciclul de viață.

Cârlige de testare
Dacă componenta dvs. folosește cârlige, React.StrictMode vă poate ajuta, de asemenea, să detectați problemele potențiale. De exemplu, să spunem că aveți un cârlig personalizat care preia date dintr -o API.
Import reacționează, {usestate, use effect} din 'reacție'; const usefetch = (url) => {const [date, setData] = usestate (null); const [încărcare, setloading] = usestate (true); UseFeffect ((() => {const FetchData = async () => {try {const răspuns = așteaptă fetch (url); const json = așteaptă răspuns.json (); setData (json);} catch (eroare) {console.error (eroare);} în sfârșit {setloading (false);}}; fetchdata (); return {date, încărcare}; }; const datafetcher = ({url}) => {const {data, încărcare} = usefetch (url); if (încărcare) {return <p> încărcare ... </p>; } return <pre> {json.stringify (date, null, 2)} </pre>; }; export implicit Datafetcher;
Iată cum puteți testa această componentă:
import reacționează de la „React”; import {mount} din 'enzime'; import Datafetcher din './Datafetcher'; descrieți ('Datafetcher Component', () => {it ('ar trebui să redați textul de încărcare inițial', () => {const url = 'https://example.com/api/data'; const wrapper = mount (<react.strictmode> <datafetcher url = {url}/> </reeact.strictMode>)); așteptați (wrapper.find ('p').
React.strictMode se va asigura căUtilizați efectulcârlig înUsefetchCârligul personalizat este numit corect și că nu există efecte secundare neașteptate.
Concluzie
Testarea componentelor cu React.strictMode folosind enzima este o modalitate eficientă de a asigura calitatea și stabilitatea aplicațiilor dvs. React. React.strictMode vă ajută să identificați problemele potențiale la începutul procesului de dezvoltare, în timp ce Enzima oferă un set puternic de instrumente pentru testarea componentelor dvs. În calitate de furnizor de enzime, vă încurajez să încorporați aceste practici de testare în fluxul de lucru pentru dezvoltare.
Dacă sunteți interesat de produse enzimatice de înaltă calitate sau alte consumabile conexe, oferim, de asemenea, o serie de produse precumAsclepius furnizează pulbere psicoză de înaltă calitate,Fosfatidilserină naturală 70%, fosfatidilserină pudră, șiTrigliceride cu lanț mediu. Dacă aveți întrebări sau doriți să discutați despre o achiziție potențială, nu ezitați să ne contactați pentru detalii suplimentare și să începeți o negociere a achizițiilor.
Referințe
- Documentația React: https://reactjs.org/docs/strict-mode.html
- Documentația enzimatică: https://enzymejs.github.io/enzyme/