Hogyan lehet tesztelni a portálokat az enzimekkel való React komponensekben?

Oct 13, 2025

Hagyjon üzenetet

James Lee
James Lee
Folyamatmérnök a GMP gyárunkban. Szerepem magában foglalja az extrakciós folyamatok finomítását a növényi por előállításának méretezhetőségének és konzisztenciájának biztosítása érdekében, miközben fenntartja a magas színvonalú szabványokat.

Hé! Enzimszállítóként sok embert láttam, hogy karcolják a fejét, amikor a portálokat a React komponensekben enzimmel végzett tesztelésekor. A portálok egy nagyon hűvös tulajdonság a React -ben, amely lehetővé teszi, hogy gyermekeket olyan DOM csomópontba hozza, amely a szülői összetevő DOM hierarchiáján kívül létezik. De a tesztelésük kissé fájdalmat okozhat a tudatában. Ebben a blogbejegyzésben néhány tippet és trükköt fogok megosztani a portálok reakciós komponenseinek enzimmel történő tesztelésére.

Mik azok a portálok a reagálásban?

Mielőtt belemerülnénk a tesztelésbe, gyorsan menjünk át a portálok. A React-ben a portálok első osztályú utat biztosítanak arra, hogy gyermekeket olyan DOM csomópontba hozzanak, amely a szülői komponens DOM hierarchiáján kívül létezik. Íme egy egyszerű példa egy portál használatára a React -ben:

az import reagáljon a 'React' -ből; Import Reactdom a 'React-dom' -ból; const PortalExample = ({gyermekek}) => {return reactdom.createPortal (gyermekek, document.getElementById ('Portal-Root')); }; Exportálási alapértelmezett PortalExample;

Ebben a példában aPortálexmintaAz alkatrész néhány gyermeket vesz, és az azonosítóval hozza őket a DOM csomópontbaportál-gyökér, amely bárhol lehet a HTML dokumentumban, még a szülő összetevő DOM -fára is.

Miért bonyolult a portálok tesztelése?

A portálok tesztelése kihívást jelenthet, mivel az enzim alapértelmezés szerint csak kölcsönhatásba lép a React komponensfával, és nem közvetlenül kölcsönhatásba lép a tényleges DOM -tal, ahol a portál gyermekeit teszi. Ez azt jelenti, hogy ha megpróbál egy olyan összetevőt tesztelni, amely egy portált használ az enzim normál módszereivel, akkor előfordulhat, hogy nem tudja elérni a portál megjelenített tartalmát.

A tesztelési környezet beállítása

Először is be kell állítania a tesztelési környezetet. Győződjön meg arról, hogy enzimet és adapterét a React telepítéséhez a projektbe telepítve van -e. Ha a React 16 vagy újabbat használja, akkor szüksége lesz aenzim-adapter-react-16vagy egy későbbi verzió a React verziójától függően.

NPM Install-Save-DEV enzim enzim-adapter-React-16

Ezután a tesztbeállítási fájlban konfigurálja az enzimet az adapter használatához:

Enzim importálása az „enzimből”; importálási adapter az „enzim-adapter-react-16” -ból; Enzim.configure ({adapter: új adapter ()});

Portálok tesztelése enzimmel

Most lépjünk be a tényleges tesztelésbe. Van néhány különféle megközelítés, amelyet az enzimporons komponensekben történő portálok tesztelésére lehet megtenni.

1. A portál gúnyolása

A portált használó összetevő tesztelésének egyik módja a portál funkciójának gúnyolódása. Ahelyett, hogy a gyermekeket egy külön DOM csomópontba állítanák, a tesztelés során közvetlenül az alkatrész normál megjelenítési módszerében jelenítheti meg őket.

Black Chinese WolfberryCbd Coffee

Íme egy példa arra, hogyan lehet ezt megtenni:

az import reagáljon a 'React' -ből; Import {Mount} az 'enzimből'; const PortalExample = ({gyermekek, UsEportal = true}) => {if (itePortal) {return reactdom.createPortal (childs.getElementById ('Portal-Root')); } return <div> {gyermekek} </div>; }; Írja le ('PortalExample', () => {it ('' gyermekeket kell hoznia, ha nem használja a portálot ', () => {const Wrapper = Mount (<portalExample usePortal = {false}> teszt tartalom </portalExample>); várható (wrapper.Text ()).

Ebben a példában afelhasználóportálistámasz aPortálexmintaösszetevő. Amikorfelhasználóportálisazhamis, az alkatrész a gyermekeket közvetlenül a<div>A portál helyett. Ilyen módon könnyen tesztelhetjük az összetevő funkcionalitását enzim normál módszereivel.

2. A portál DOM csomópontjának tesztelése

Egy másik megközelítés a tényleges DOM csomópont tesztelése, ahol a portál gyermekeit teszi. Ehhez hozzá kell férnie a DOM csomóponthoz, és ellenőriznie kell annak tartalmát.

az import reagáljon a 'React' -ből; Import {Mount} az 'enzimből'; const PortalExample = ({gyermekek}) => {return reactdom.createPortal (gyermekek, document.getElementById ('Portal-Root')); }; Írja le ('PortalExample', () => {it ('' A Portal Root-ban gyermekeket kell készítenie ', () => {const Portalroot = Document.CreateElement (' Div '); Portalroot.id =' Portal-Root '; Document.body.AppendChild (Portalroot); const Wrapper = Mount (<Portalexample> Teszt-tartalom </Portalexample>); várható (Portalroot.TextContent).

Ebben a példában új DOM csomópontot hozunk létre az azonosítóvalportál-gyökérA teszt során szerelje fel az összetevőt enzim segítségével, majd ellenőrizze a tartalmatportalrootcsomópont. A teszt elvégzése után eltávolítjuk aportalrootcsomópont a DOM -tól a takarításhoz.

Harmadik fél könyvtárak használata

Vannak olyan harmadik fél könyvtárak is, amelyek megkönnyíthetik a portálok enzimkel történő tesztelését. Például a@tesztelés-könyvtár/reagálásA könyvtár beépített támogatással rendelkezik a portálok tesztelésére. Az enzimmel kombinálva felhasználhatja a React komponensek hatékonyabb tesztelésére.

NPM telepítés-save-dev @tesztelési könyvtár/reagálás

Íme egy példa arra, hogyan lehet használni@tesztelés-könyvtár/reagálásegy portált használó összetevő tesztelése:

az import reagáljon a 'React' -ből; Import {Mount} az 'enzimből'; Import {render, képernyő} a '@tesztelési-könyvtár/react' -ből; const PortalExample = ({gyermekek}) => {return reactdom.createPortal (gyermekek, document.getElementById ('Portal-Root')); }; Írja le ('PortalExample', () => {it ('' A Portal Root-ban kell lennie gyermekeket a portál gyökérében ', () => {const Portalroot = Document.CreateElement (' Div '); Portalroot.id =' Portal-Root '; Document.body.appendChild (Portalroot); Revender (<PortalExample> Test Content <///Portalexample>); Tartalom ”).

Ebben a példában használjuk@tesztelés-könyvtár/reagálásSbeadfunkció az összetevő és a megjelenítéshez ésscreen.getByTextAnnak ellenőrzéséhez, hogy a tartalom megjelenik -e a portál gyökérében.

Következtetés

A portálok tesztelése a React komponensekben enzimmel trükkös lehet, de a megfelelő megközelítéssel határozottan megvalósítható. Akár úgy dönt, hogy gúnyolódik a portálon, teszteli a portál DOM csomópontját, vagy harmadik fél könyvtárakat használ, a legfontosabb az, hogy megtalálja a módját a portál által nyújtott tartalom elérésére és ellenőrzésére.

Ha érdekli az enzimtermékeink, vagy bármilyen kérdése van a React komponensek tesztelésével kapcsolatban, bátran forduljon a beszerzési vitáról. Azért vagyunk itt, hogy segítsünk abban, hogy a lehető legtöbbet hozza ki az enzimből a projektekben.

Mellesleg, ha a gyógynövénykivonatok is érdekelnek, nézd meg ezeket a linkeket:Fekete kínai farkas,CBD kávé, ésKiváló minőségű terpentin olaj/terpentin olajgyár ár/ásványi terpentin olaj-

Referenciák

  • React hivatalos dokumentáció a portálokról: React Team.
  • Enzim Hivatalos dokumentáció: Airbnb.
  • @Tesztelési könyvtár/React Hivatalos dokumentáció: Könyvtári csapat tesztelése.
A szálláslekérdezés elküldése