Bagaimana untuk menguji komponen dengan react.cloneelement dalam React menggunakan enzim?

Aug 08, 2025

Tinggalkan pesanan

James Lee
James Lee
Jurutera proses di kilang GMP kami. Peranan saya melibatkan proses pengekstrakan penapisan untuk memastikan skalabiliti dan konsistensi dalam pengeluaran serbuk tumbuhan kami sambil mengekalkan piawaian berkualiti tinggi.

Komponen ujian dalam React adalah bahagian penting dalam proses pembangunan untuk memastikan kebolehpercayaan dan fungsi aplikasi anda. Satu teknik kuat dalam ujian reaksi menggunakanReact.CloneElementDalam kombinasi dengan enzim. Sebagai pembekal enzim, saya di sini untuk membimbing anda melalui proses pengujian komponen denganReact.CloneElementmenggunakan enzim.

Memahami React.CloneElement

React.CloneElementadalah fungsi yang dibina dalam React yang membolehkan anda mengklonkan elemen React yang sedia ada dan secara pilihan lulus prop baru kepadanya. Ini boleh menjadi sangat berguna apabila anda ingin mengubah suai tingkah laku atau penampilan komponen semasa ujian. SintaksReact.CloneElementadalah seperti berikut:

React.CloneElement (elemen, [props], [... kanak -kanak])

Di sini,elemenadalah elemen yang anda mahu klon,propsadalah objek pilihan yang mengandungi prop baru yang anda ingin lulus ke elemen klon, dankanak -kanakadalah kanak -kanak baru pilihan untuk elemen klon.

Paridis Rhizoma Extract PolyphyllinNatural Organic Beetroot Powder

Menyediakan persekitaran ujian

Sebelum kita mula menguji denganReact.CloneElementMenggunakan enzim, kita perlu menyediakan persekitaran ujian yang betul. Pertama, pastikan anda mempunyai React dan Enzyme yang dipasang dalam projek anda. Anda boleh memasang enzim dan penyesuai untuk bertindak balas menggunakan npm atau benang:

Pemasangan NPM-S-SAVE-DEV Enzim-Adapter-ReAct-16

Seterusnya, konfigurasikan enzim untuk menggunakan penyesuai yang sesuai dalam fail persediaan ujian anda. Untuk React 16, ia akan kelihatan seperti ini:

enzim import dari 'enzim'; penyesuai import dari 'enzim-adapter-react-16'; Enzyme.configure ({Adapter: New Adapter ()});

Ujian Komponen dengan React.CloneElement dan Enzyme

Mari kita anggap kita mempunyai komponen reaksi sederhana yang disebutButangyang menerima akurang upayaProp:

Import React dari'React '; const button = ({disabled, children}) => {return (<button disabled = {disabled}> {children} </button>); }; butang lalai eksport;

Kami mahu menguji bagaimanaButangkomponen berkelakuan ketikakurang upayaProp diubah. Kita boleh menggunakanReact.CloneElementDalam ujian enzim kami untuk mencapai matlamat ini.

Import React dari'React '; import {cetek} dari 'enzim'; butang import dari './button'; terangkan ('komponen butang', () => {it ('hendaklah dilumpuhkan apabila prop dilumpuhkan adalah benar', () => {const originalElement = <utton> klik saya </butang>; const clonedElement = react.cloneElement (originalElement, {dilumpuhkan: true}); menjangkakan (bungkus.find ('butang') prop ('dilumpuhkan')). menjangkakan (wrapper.find ('butang') prop ('dilumpuhkan')). Tobe (palsu);

Dalam ujian di atas, kita mula -mula membuat asalButangelemen. Kemudian kita gunakanReact.CloneElementuntuk mencipta elemen baru dengan yang dikehendakikurang upayaprop. Akhirnya, kami menggunakan enzimcetekmemberi untuk menjadikan elemen klon dan periksa sama adakurang upayaProp of thebutangelemen ditetapkan dengan betul.

Senario ujian lanjutan

Dalam senario yang lebih kompleks, anda mungkin ingin menguji komponen yang telah bersarang kanak -kanak atau komponen yang bergantung pada konteks. Mari kita pertimbangkan komponen yang dipanggilParentComponentyang menjadikan aChildComponentDi dalamnya:

Import React dari'React '; mengimport anak -anak dari './ChildComponent'; const ParentComponent = () => {return (<div> <childComponent /> < /div>); }; Eksport Komponen Lalai;

Kita boleh menggunakanReact.CloneElementuntuk lulus alat tambahan keChildComponentsemasa ujian.

Import React dari'React '; import {cetek} dari 'enzim'; Import ParentComponent dari './ParentComponent'; mengimport anak -anak dari './ChildComponent'; Huraikan ('ParentComponent', () => {IT ('harus lulus prop tambahan kepada ChildComponent', () => {const wrapper = cetek (<parentComponent />); const child = wrapper.find (const clonedChild = react.CloneElement (kanak -kanak) cetek (clonedchild);

Dalam contoh ini, kita mula -mula cetekParentComponentdan cariChildComponentdi dalamnya. Kemudian kita gunakanReact.CloneElementuntuk mengklonkanChildComponentdan lulus prop baru kepadanya. Akhirnya, kami cetek memberikan yang diklonChildComponentdan periksa sama ada prop baru ditetapkan dengan betul.

Menggunakan react.cloneelement dengan konteks

Konteks React adalah cara untuk berkongsi data antara komponen tanpa perlu lulus props secara manual melalui setiap peringkat pokok komponen. Anda juga boleh menggunakanReact.CloneElementuntuk menguji komponen yang bergantung pada konteks.

Mari kita anggap kita mempunyaiContextproviderdan aContextconsumerKomponen:

Import React, {createContext, useContext} dari'React '; const myContext = createContext (); const contextProvider = ({children}) => {const contextValue = {message: 'hello from context'}; kembali (<myContext.provider value = {contextValue}> {children} </mycontext.provider>); }; const contextConsumer = () => {const {message} = useContext (myContext); kembali <div> {message} </div>; }; Eksport {ContextProvider, ContextConsumer};

Kita boleh menggunakanReact.CloneElementuntuk mengujiContextconsumerKomponen secara berasingan dengan memberikan nilai konteks mengejek.

Import React dari'React '; import {cetek} dari 'enzim'; import {ContextProvider, ContextConsumer} dari './ContextComponents'; Huraikan ('ContextConsumer', () => {it ('harus memaparkan mesej yang betul dari konteks', () => {const mockContextValue = {message: 'Mock Message'}; const originalElement = <contextConsumer />; {clonedElement} </contextProvider>);

Kesimpulan

Ujian komponen denganReact.CloneElementMenggunakan enzim adalah teknik yang kuat yang membolehkan anda mengubah suai dan menguji tingkah laku komponen React dalam pelbagai senario. Sama ada anda sedang menguji komponen mudah atau kompleks yang bergantung pada konteks,React.CloneElementBoleh membantu anda membuat ujian yang lebih mantap dan boleh dipercayai.

Jika anda berminat untuk meningkatkan keupayaan ujian React anda, anda mungkin juga berminat dengan beberapa produk berkaitan kami. Lihat kamiSerbuk bit organik semula jadi,Minyak Rosemary, danParidis Rhizoma Extract Polyphyllin.

Sekiranya anda mempunyai sebarang pertanyaan atau berminat untuk membeli produk enzim kami untuk keperluan ujian anda, sila hubungi kami untuk perbincangan terperinci. Kami berada di sini untuk memberi anda penyelesaian terbaik untuk keperluan ujian React anda.

Rujukan

  • React Documentation Rasmi
  • Dokumentasi Rasmi Enzim
Hantar pertanyaan