Az összetevők tesztelése a React -ben a fejlesztési folyamat kulcsfontosságú része az alkalmazás megbízhatóságának és funkcionalitásának biztosítása érdekében. Az egyik hatékony technika a React tesztelés során a használataReact.CloneElementenzimmel kombinálva. Enzimszállítóként azért vagyok itt, hogy végigvezesse Önt az alkatrészek tesztelésének folyamatánReact.CloneElementenzim használatával.
A reagálás megértése.CloneElement
React.CloneElementegy beépített - a React funkcióban, amely lehetővé teszi a meglévő React elem klónozását, és opcionálisan új kellékeket ad át. Ez rendkívül hasznos lehet, ha a tesztelés során módosítani szeretné egy összetevő viselkedését vagy megjelenését. A szintaxisReact.CloneElementa következő:
React.CloneElement (elem, [kellékek], [... gyermekek])
Itt,elemaz a elem, amelyet klónozni szeretne,kellékekegy opcionális objektum, amely tartalmazza az új kellékeket, amelyeket át kell adni a klónozott elemnek, ésgyermekekaz opcionális új gyermekek a klónozott elemhez.


A tesztelési környezet beállítása
Mielőtt elkezdenénk tesztelniReact.CloneElementEnzim használatával be kell állítanunk egy megfelelő tesztelési környezetet. Először győződjön meg arról, hogy reagált és enzimet telepített -e a projektbe. Telepítheti az enzimet és annak adaptert a React számára NPM vagy fonal segítségével:
NPM Install-Save-DEV enzim enzim-adapter-React-16
Ezután konfigurálja az enzimet a teszt beállítási fájl megfelelő adapterének használatához. A React 16 esetében ez így néz ki:
Enzim importálása az „enzimből”; importálási adapter az „enzim-adapter-react-16” -ból; Enzim.configure ({adapter: új adapter ()});
Komponensek tesztelése React.Cloneelement és enzim segítségével
Tegyük fel, hogy van egy egyszerű React komponensünkGombEz elfogadja afogyatékkal élőktámaszt:
importáljon reagálva a „react -ból”; const gomb = ({fogyatékos, gyermekek}) => {return (<gomb letiltva = {letiltás}> {childs} </butr>); }; Exportálási alapértelmezett gomb;
Meg akarjuk tesztelni, hogy aGomba komponens viselkedik, amikor afogyatékkal élőkA prop megváltozott. HasználhatunkReact.CloneElementEnzimtesztjeinkben ennek elérése érdekében.
importáljon reagálva a „react -ból”; Import {sekély} az 'enzimből'; Importálás gomb a './button' -ból; Írja le ('gombkomponens', () => {it ('le kell tiltani, ha a letiltott prop igazi', () => {const OrigeralElement = <Babban> kattintson a Me </blub>; Várható (Wrapper.find ('Button'). várj (wrapper.find ('gomb').
A fenti tesztekben először létrehozunk egy eredeti példánytGombelem. Akkor használjukReact.CloneElementúj elemet létrehozni a kívánt módonfogyatékkal élőktámaszt. Végül az enzimeket használjuksekélymegjelenítés a klónozott elem megjelenítéséhez, és ellenőrizze, hogy afogyatékkal élőkagombAz elem helyesen van beállítva.
Fejlett tesztelési forgatókönyvek
Bonyolultabb forgatókönyvekben érdemes tesztelni azokat az alkatrészeket, amelyek beágyazódtak olyan gyermekek vagy komponensek, amelyek a kontextusra támaszkodnak. Nézzük meg egy nevezett alkatrésztSzülői vállalkozásEz aGyermekkomponensbenne:
importáljon reagálva a „react -ból”; importálja a gyermekkomponens a './childComponent' -ből; const ParentComponent = () => {return (<div> <childComponent /> </div>); }; Exportálási alapértelmezett szülőkomponens;
HasználhatunkReact.CloneElementTovábbi kellékek átadása aGyermekkomponensA tesztelés során.
importáljon reagálva a „react -ból”; Import {sekély} az 'enzimből'; Import ParentComponent a './parentComponent' -ből; importálja a gyermekkomponens a './childComponent' -ből; Írja le ('ParentComponent', () => {it ('további kellékeket kell adnia a ChildComponentnek', () => {const Wrapper = sekély (<ParentComponent />); const Child = Wrapper.find (childComponent); const ClonedChild = react.CloneLement (Child.get.get.get (0), {Testprop: 'TestValue'}); sekély (klónozó);
Ebben a példában először a sekély megjelenítjük aSzülői vállalkozásés keresse meg aGyermekkomponensbenne. Akkor használjukReact.CloneElementklónozni aGyermekkomponensÉs adjon át egy új támaszot. Végül sekélyen látjuk a klónozástGyermekkomponensÉs ellenőrizze, hogy az új támasz megfelelő -e megfelelően.
A react.CloneElement használata a kontextussal
A React Context egy módja annak, hogy megosszák az adatokat az alkatrészek között anélkül, hogy a kellékeket manuálisan át kellene adniuk az összetevő fa minden szintjén. Használhatja isReact.CloneElementA kontextusra támaszkodó komponensek tesztelése.
Tegyük fel, hogy van egyKontextusproviderés aKontextusosösszetevő:
Import React, {CreateContext, usheContext} a'React '-től; const myContext = createContext (); const contextProvider = ({gyermekek}) => {const contextValue = {üzenet: 'hello a kontextusból'}; return (<myContext.provider érték = {contextValue}> {gyermekek} </myContext.provider>); }; const contextConsumer = () => {const {message} = usecontext (myContext); visszatérés <div> {üzenet} </div>; }; Export {ContextProvider, ContextConsumer};
HasználhatunkReact.CloneElementhogy tesztelje aKontextusosKomponens elszigeteltségben egy ál -kontextus érték biztosításával.
importáljon reagálva a „react -ból”; Import {sekély} az 'enzimből'; Import {ContextProvider, ContextConsumer} a './ContextComponents' -ből; Írja le ('ContextConsumer', () => {it ('' meg kell jelenítenie a helyes üzenetet a kontextusból ', () => {const mockConTextValue = {üzenet:' Mock üzenet '}; const OrigeralElement = <contextConsumer />; const klónedelemon = reageaktus.cloneLement (OriginalElement, {Context: MockConTextValue}); {CLONEDElement} </ContextProvider>);
Következtetés
Az alkatrészek teszteléseReact.CloneElementAz enzim használata egy hatékony technika, amely lehetővé teszi a reagálási komponensek viselkedésének módosítását és tesztelését különböző forgatókönyvekben. Akár egyszerű komponenseket tesztel, vagy olyan összetett elemeket, amelyek a kontextusra támaszkodnak,React.CloneElementSegíthet robusztusabb és megbízhatóbb tesztek készítésében.
Ha érdekli a React tesztelési képességeinek fejlesztése, akkor érdekelhet néhány kapcsolódó termékünk. Nézze meg aTermészetes organikus cékla por,Rozmaringolaj, ésParidis rhizoma kivonat polifillin-
Ha bármilyen kérdése van, vagy érdekli az enzimtermékeink megvásárlása a tesztelési igényekhez, kérjük, vegye fel velünk a kapcsolatot a részletes megbeszélés céljából. Azért vagyunk itt, hogy a legjobb megoldásokat nyújtsuk Önnek a React tesztelési követelményeihez.
Referenciák
- React hivatalos dokumentáció
- Enzim hivatalos dokumentáció