Cum se testează portalurile în componente React cu enzimă?

Oct 13, 2025

Lăsaţi un mesaj

James Lee
James Lee
Inginer de proces în fabrica noastră GMP. Rolul meu implică rafinarea proceselor de extracție pentru a asigura scalabilitatea și consistența în producția noastră de pulbere plantă, menținând în același timp standarde de înaltă calitate.

Hei acolo! În calitate de furnizor de enzime, am văzut o mulțime de oameni care își zgârie capul când vine vorba de testarea portalurilor în componente React cu enzimă. Portalurile sunt o caracteristică destul de mișto în React, care vă permite să transmiteți copiii într -un nod DOM care există în afara ierarhiei Dom a componentei părinte. Dar testarea lor poate fi un pic de durere în tine-cunoscuți-ce. În această postare pe blog, voi împărtăși câteva sfaturi și trucuri despre cum să testați portalurile în componente React cu enzima.

Ce sunt portalurile în React?

Înainte de a ne scufunda în testare, să trecem repede peste portalurile. În React, portalurile oferă o modalitate de primă clasă de a transmite copiii într-un nod DOM care există în afara ierarhiei DOM a componentei părinte. Iată un exemplu simplu de utilizare a unui portal în React:

import reacționează de la „React”; import reacție din „reacție-Dom”; const portalexample = ({Children}) => {return Reactdom.CreatePortal (copii, document.getElementById ('portal-root')); }; export implicit portalexample;

În acest exemplu,PortalexampleComponenta ia unii copii și îi transmite în nodul DOM cu ID -ulPortal-rădăcină, care ar putea fi oriunde în documentul HTML, chiar și în afara arborelui DOM al componentei părinte.

De ce testarea portalurilor este complicată

Portalurile de testare pot fi dificile, deoarece enzima, implicit, interacționează doar cu arborele componente React și nu interacționează direct cu DOM -ul real în care portalul își dă copiii. Aceasta înseamnă că, dacă încercați să testați o componentă care utilizează un portal folosind metodele normale ale enzimei, este posibil să nu puteți accesa conținutul redat al portalului.

Configurarea mediului de testare

În primul rând, trebuie să vă configurați mediul de testare. Asigurați -vă că aveți enzimă și adaptorul său pentru React instalate în proiectul dvs. Dacă utilizați React 16 sau mai târziu, veți avea nevoie deEnzimă-Adapter-React-16sau o versiune ulterioară în funcție de versiunea React.

Instalare NPM-Enzimă enzimatică-Save-Dev

Apoi, în fișierul de configurare a testului, configurați enzima pentru a utiliza adaptorul:

import enzimă din „enzimă”; adaptor de import din „enzime-adapter-reacție-16”; Enzyme.configure ({adapter: nou adapter ()});

Testarea portalurilor cu enzimă

Acum, să intrăm în testarea propriu -zisă. Există câteva abordări diferite pe care le puteți adopta pentru a testa portalurile în componente React cu enzimă.

1. batjocorind portalul

O modalitate de a testa o componentă care folosește un portal este de a batjocori funcționalitatea portalului. În loc să îi transmiteți pe copii într -un nod DOM separat, le puteți reda direct în metoda normală de redare a componentei în timpul testării.

Black Chinese WolfberryCbd Coffee

Iată un exemplu despre cum puteți face acest lucru:

import reacționează de la „React”; import {mount} din 'enzime'; const portalexample = ({Children, usePortal = true}) => {if (usePortal) {return reacTdom.createPorttal (copii, document.getElementById ('portal-root')); } return <div> {copii} </div>; }; descrie ('portalexample', () => {it ('ar trebui să -i redea copiii atunci când nu folosesc portal', () => {const wraper = mount (<portalexample useporttal = {false}> test conținut </portalexample>); se așteaptă (wrapper.text ()). tobe ('test conținut');});});

În acest exemplu, am adăugat unuseportalPropPortalexamplecomponentă. Cânduseportalestefals, componenta îi face pe copii direct într -un<div>în loc să folosească un portal. În acest fel, putem testa cu ușurință funcționalitatea componentei folosind metodele normale ale enzimei.

2. Testarea nodului Dom al portalului

O altă abordare este testarea nodului DOM real în care portalul își dă copiii. Pentru a face acest lucru, trebuie să accesați nodul DOM și să verificați conținutul acestuia.

import reacționează de la „React”; import {mount} din 'enzime'; const portalexample = ({Children}) => {return Reactdom.CreatePortal (copii, document.getElementById ('portal-root')); }; descrieți ('portalexample', () => {it ('ar trebui să-i redea copiii în rădăcina portalului', () => {const portalroot = document.createElement ('div'); portalroot.id = 'portal-root'; document.body.appendchild (portalroot); const wrapper = Muntele (<portAlexample> Test conținut </portalxample>); așteptați (portalroot.textcontent) .Tobe („Test conținut”);

În acest exemplu, creăm un nou nod DOM cu ID -ulPortal-rădăcinăÎn test, montați componenta folosind enzima, apoi verificați conținutulportalrootnodul. După terminarea testului, eliminămportalrootnod de la DOM la curățare.

Folosind biblioteci terțe

Există, de asemenea, câteva biblioteci terțe care pot facilita portalurile de testare cu enzimă. De exemplu, The@Testing-Bibrary/ReactBiblioteca are suport încorporat pentru testarea portalurilor. Îl puteți utiliza în combinație cu enzima pentru a vă testa mai eficient componentele React.

NPM INSTALARE-SAVE-DEV @Testing-Bibrary/React

Iată un exemplu despre modul în care puteți folosi@Testing-Bibrary/ReactPentru a testa o componentă care folosește un portal:

import reacționează de la „React”; import {mount} din 'enzime'; import {render, ecran} din '@testing-bibries/reacT'; const portalexample = ({Children}) => {return Reactdom.CreatePortal (copii, document.getElementById ('portal-root')); }; descrie ('portalexample', () => {it ('ar trebui să-i redea copiii în rădăcina portalului', () => {const portalroot = document.createElement ('div'); portalroot.id = 'portal-root'; document.body.AppendChild (portalroot); render (<Talexample> Test TEST </Portalexample>); așteptați (Screen.getTYtext ( Conținut ')). TOBEINTHEDOCUMENT ();

În acest exemplu, folosim@Testing-Bibrary/React'sfaceFuncționează pentru a reda componenta șiecran.getByTextPentru a verifica dacă conținutul este redat în rădăcina portalului.

Concluzie

Portalurile de testare în componentele React cu enzimă poate fi dificilă, dar cu abordarea corectă, este cu siguranță realizabilă. Indiferent dacă alegeți să batjocoriți portalul, să testați nodul DOM al portalului sau să utilizați biblioteci terțe, cheia este să găsiți o modalitate de a accesa și verifica conținutul redat de portal.

Dacă sunteți interesat de produsele noastre enzimatice sau aveți întrebări cu privire la testarea componentelor React, nu ezitați să ajungeți la o discuție de achiziții. Suntem aici pentru a vă ajuta să profitați la maxim de enzime în proiectele dvs.

Apropo, dacă sunteți interesat și de extractele pe bază de plante, consultați aceste link -uri:Lupul Chinezesc negru,Cafea CBD, șiUlei de terepentină de înaltă calitate/fabrică de ulei de terepentină Preț/ulei de terepentină mineral.

Referințe

  • React Documentație oficială pe portaluri: echipa React.
  • Documentația oficială a enzimei: Airbnb.
  • @Testing-Bibrary/React Documentație oficială: Echipa bibliotecii de testare.
Trimite anchetă