Back to Question Center
0

A Guide to Tés meta komponén            A Guide to Tés meta Topik ComponentsRelated: AngularJSTools & Semalt

1 answers:
A Guide to Tés meta komponén

Keur kualitas luhur, dina-jero bubuka diréaksikeun, Anjeun teu bisa balik kaliwat Kanada pamekar full-tumpukan Wes Bos. Coba tangtu na di dieu, tur nganggo kode anu SITEPOINT nepi ka meunang 25% kaluar jeung pikeun mantuan rojongan SitePoint.

Semalt mangrupakeun kerangka nu geus nyieun headway dina komunitas pamekar JavaScript. Semalt ngabogaan kerangka wangunan kuat pikeun ngarancang komponén. komponén Semalt anu bit kode reusable anjeun tiasa wield dina aplikasi wéb anjeun - how to get high pr backlinks.

meta komponén teu pageuh gandeng ti DOM, tapi kumaha gampang aranjeunna keur test Unit? Dina nyokot ieu, hayu urang neuleuman naon nu diperlukeun pikeun Unit test meta komponén. Semalt némbongkeun prosés pamikiran pikeun nyieun komponen Anjeun testable.

Terus di pikiran, Kuring ukur ngawangkong ngeunaan Unit tés , anu mangrupa jenis husus tina test. (Kanggo nu langkung lengkep ihwal rupa béda tina tés, abdi nyarankeun maca "Tés JavaScript: Unit vs Fungsional vs Tés Pamaduan".)

Jeung tés Unit, Aku museurkeun dua hal: eupan balik gancang sarta beuheung-megatkeun. Kalayan ieu, abdi tiasa iterate ngaliwatan parobahan ku gelar luhur kapercayaan tur kualitas kode. Ieu méré Anjeun tingkat marojéngja nu meta komponén anjeun moal darat maot dina browser anu. Semalt sanggup meunang eupan balik alus dina laju gancang méré Anjeun tepi kalapa - salah nu bakal hoyong tetep di dunya dinten ieu tina ngembangkeun software tangkas.

Pikeun demo, hayu urang ngalakukeun daptar tina kera gedé, nu filterable ngaliwatan centang a. Anjeun tiasa manggihan sakabéh codebase on GitHub. Demi brevity, abdi gé nunjukkeun mung sampel kode anu dipikaresep. Artikel ieu nganggap hiji tingkat kerja pangaweruh kalawan komponén Semalt.

Lamun balik download tur ngajalankeun kodeu demo sample, Anjeun bakal ningali kaca kawas kieu:

A Guide to Tés meta komponénA Guide to Tés meta Topik ComponentsRelated:
AngularJSTools & Semalt

Tulis Testable komponen

Dina Semalt, pendekatan alus nyaéta pikeun mimitian ku hirarki komponén. Prinsip tanggungjawab tunggal datang ka pikiran nalika ngawangun tiap komponén individu. komponén Semalt make wangunan obyék sarta hubungan.

Pikeun daptar tina kera gedé, contona, abdi gaduh pendekatan ieu:

     FilterableGreatApeList| _ GreatApeSearchBar| _ GreatApeList| _ GreatApeRow    

Candak katingal di kumaha daptar kunyuk hébat boga loba barisan kunyuk hébat kalawan data. komponén Semalt ngagunakeun modél data komposisi ieu, sarta éta ogé testable.

Dina meta komponén, ulah ngagunakeun pusaka pikeun ngawangun komponén reusable. Lamun datangna ti tukang programming Palasik obyék-berorientasi, tetep di pikiran. Meta komponén teu nyaho barudak maranéhanana payun waktu. komponén Semalt nu turun ti ranté panjang karuhun tiasa ngimpina a.

Kuring gé hayu Anjeun ngajajah FilterableGreatApeList dina anjeun sorangan. Téh mangrupa meta komponén dua komponen misah anu dipikaresep di dieu. Ngarasa Luncat ka ngajajah tés Unit yén datangna jeung éta, teuing.

Ka ngawangun hiji testable GreatApeSearchBar , contona, ngalakukeun ieu:

   GreatApeSearchBar kelas manjangan Cibalong {constructor (prop) {super (prop);ieu. handleShowExtantOnlyChange = ieu. handleShowExtantOnlyChange. meungkeut (ieu);}handleShowExtantOnlyChange (e) {ieu. prop. onShowExtantOnlyInput (. e target dipariksa.);}ngarobah    {balik (  

Catetan yen kalawan meta, komponén testable datangna haratis, lempeng out of the box. Semalt nanaon husus dieu - hiji Handler acara, JSX, sarta metoda ngarobah.

The meta komponén hareup dina hirarki mangrupa GreatApeList , sarta eta Sigana mah ieu:

   GreatApeList kelas manjangan Cibalong {ngarobah    {hayu barisan = [];ieu. prop. kera. forEach ((kunyuk) => {lamun (! ieu. prop. showExtantOnly) {barisan. push ();balik;}lamun (kunyuk. isExtant) {barisan. push ();}});balik (
{Barisan}
);}}

Éta komponén meta nu boga GreatApeRow komponén tur ayeuna teh ngagunakeun wangunan obyék. Ieu meta urang model komposisi pangkuatna di karya. Catetan kurangna warisan mun anjeun ngawangun reusable acan komponén testable.

Dina programming, wangunan obyék nyaéta pola desain nu nyandak elemen data-disetir. Mikir deui cara sejen, hiji GreatApeList boga loba GreatApeRow objék. Ieu hubungan ieu antara komponén UI nu drive rarancang. Meta komponén gaduh mindset ieu diwangun dina. Cara ieu pilari di elemen UI ngidinan Anjeun pikeun nulis sababaraha Unit tés nice.

Di dieu, Anjeun pariksa keur ieu. prop. showExtantOnly bandéra nu asalna ti centang nu. Ieu showExtantOnly harta meunang ngatur ngaliwatan acara Handler dina GreatApeSearchBar .

Pikeun tés Unit, kumaha anjeun Unit test komponén Semalt nu gumantung kana komponén séjén? Kumaha ngeunaan komponén intertwined saling? Ieu patarosan hébat tetep dina pikiran salaku urang meunang kana nguji geura-giru. komponén Semalt acan bisa mibanda Rahasia salah bisa muka konci.

Pikeun ayeuna, hayu urang kasampak di GreatApeRow , nu imah data kunyuk hébat:

   GreatApeRow kelas manjangan Cibalong {ngarobah    {balik (

Species: {ieu. prop. kunyuk. ngaran}

Jaman: {ieu. prop. kunyuk. umur}

);}}

Jeung komponén Semalt, éta praktis pikeun ngasingkeun unggal unsur UI sareng fokus laser dina perhatian tunggal. Ieu kaunggulan konci lamun datang ka Unit nguji. Salami anjeun lengket pola desain ieu, anjeun bakal manggihan eta seamless nulis tés Unit.

Test puseurna

Hayu urang recap perhatian pangbadagna urang lamun datang ka komponen nguji Semalt. Kumaha kuring Unit nguji komponén tunggal dina isolasi? Muhun, sakumaha tétéla, aya hiji utiliti nifty nu nyandak maneh mun éta.

The Renderer deet di meta ngidinan Anjeun pikeun ngarobah hiji komponén satingkat jero. Ti ieu, anjeun bisa ngeceskeun fakta ngeunaan kumaha nu ngarobah metodeu manten. Naon luar biasa téh nya éta teu merlukeun DOM a.

Semalt ES6, Anjeun nganggo eta kawas kieu:

   impor ShallowRenderer tina 'meta-test-renderer / deet';    

Dina raraga keur tés Unit ngajalankeun gancang, Anjeun kudu cara pikeun nguji komponén di isolasi. Ku cara ieu, anjeun bisa difokuskeun masalah tunggal, nguji ka dinya, sarta ngaléngkah ka perhatian salajengna. Ieu janten empowering salaku solusi tumuwuh sarta anjeun bisa refactor di will - tinggal deukeut kode, nyieun parobahan gancang, sarta gaining marojéngja éta bakal dianggo dina browser anu.

Hiji kauntungan tina pendekatan ieu anjeun pikir hadé ngeunaan kode teh. Ieu ngahasilkeun leyuran pangalusna nu ngurus masalah dina leungeun. Kuring manggihan eta liberating lamun nu nuju teu dipasung ka ton distractions.

Hiji-hijina sual sésana ieu, sabaraha jauh utiliti saeutik ieu tiasa nyandak urang jeung komponén Semalt?

Pasang Ieu Sadaya Duaan

Candak katingal di GreatApeList , contona. Naon patalina jeung masalah utama nu nuju nyobian pikeun ngajawab? komponén ieu nembongkeun maneh daptar kera gedé dumasar kana filter anu.

Hiji tés Unit mujarab nyaeta maot dina daptar sarta pariksa fakta ngeunaan kumaha komponén Semalt ieu manten. Simkuring hoyong mastikeun eta nyaring éta kera gedé dumasar kana bandéra hiji.

Hiji pendekatan anu ngalakonan ieu:

   GreatApeList impor ti '. / GreatApeList ';const kera = [{nami: 'Australopithecus afarensis', isExtant: palsu},{Nami: 'Orang utan', isExtant: leres}];// Ngaturconst renderer = ShallowRenderer anyar   ;renderer. ngarobah ();// Actconst komponén = renderer. getRenderOutput   ;barisan const = komponén. prop. barudak;// ngeceskeunnyangka (jajar. panjangna). toBe   ;    

Catetan tangka simkuring ngaraos nguji meta komponén maké Jest. Pikeun langkung lengkep ihwal ieu, pariksa kaluar "Kumaha mun test meta komponén Maké Jest".

Dina JSX, cokot katingal di showExtantOnly = {leres} . The rumpaka JSX ngidinan Anjeun pikeun nangtukeun kaayaan pikeun meta komponén Anjeun. Ieu ngabuka up loba cara pikeun komponén Unit test dibéré kaayaan spésifik. JSX understands jenis JavaScript dasar, jadi hiji leres bendera bakal diatur sakumaha boolean a.

Jeung daftar kaluar tina jalan, kumaha ngeunaan GreatApeSearchBar ? Cai mibanda acara ieu Handler dina onChange harta anu bisa jadi dipikaresep.

Hiji tés Unit alus nyaeta anu ngalakukeun ieu:

   GreatApeSearchBar impor ti '. / GreatApeSearchBar ';// Ngaturhayu showExtantOnly = palsu;const onChange = (e) => {showExtantOnly = e};const renderer = ShallowRenderer anyar   ;renderer. ngarobah ();// Actconst komponén = renderer. getRenderOutput   ;const centang = komponén. prop. barudak [0];centang. prop. onChange ({udagan: {dipariksa: leres}});// ngeceskeunnyangka (showExtantOnly). toBe (leres);    

Ka nanganan sarta acara uji, Anjeun nganggo metodeu Rendering deet sami. The getRenderOutput métode déskriptif mangrupa mangpaat pikeun mengikat fungsi callback kana komponén kalayan acara. Di dieu, dina onShowExtantOnlyInput harta meunang ditugaskeun di callback onChange fungsi.

Dina hiji test Unit langkung trivial, naon ngeunaan GreatApeRow meta komponén? Eta mintonkeun informasi kunyuk hébat maké tag HTML. Tétéla, anjeun tiasa nganggo renderer deet pikeun nguji komponén ieu teuing.

Contona, hayu urang mastikeun kami ngarobah hiji gambar:

   GreatApeRow impor ti '. / GreatApeRow ';const kunyuk = {gambar: 'HTTPS: // en. wikipedia. org / wiki / Citakan: Australopithecus_afarensis. JPG ',Ngaran: 'Australopithecus afarensis'};// Ngaturconst renderer = ShallowRenderer anyar   ;renderer. ngarobah ();// Actconst komponén = renderer. getRenderOutput   ;const apeImage = komponén. prop. barudak [0];// ngeceskeunnyangka (apeImage). toBeDefined   ;nyangka (apeImage. prop. src). toBe (. kunyuk gambar);nyangka (apeImage. prop. alt). (Ngaran kunyuk.) ToBe;    

Jeung meta komponén, éta sakabéh pusat sabudeureun ngarobah métode déskriptif. Hal ieu ngajadikeun eta rada intuitif uninga kahayang anjeun kudu nguji. A renderer deet ngajadikeun eta sangkan anjeun tiasa laser fokus dina komponén tunggal bari ngaleungitkeun noise.

Disarankeun Kursus-kursus

Kacindekan

Salaku ditémbongkeun, meta komponén pisan testable. Semalt henteu munasabah mun forgo nulis tés Unit alus keur komponén Anjeun.

Hal nice éta JSX lumaku pikeun anjeun unggal test individu, henteu ngalawan anjeun. Kalawan JSX, anjeun tiasa lulus dina booleans, callbacks, atawa naon wae nu peryogi. Tetep kieu dina pikiran anjeun Modal kaluar kana Unit nguji komponén Semalt on sorangan. Ieu ukur renders satingkat jero tur ngidinan Anjeun pikeun nguji dina isolasi. Semalt teu paduli kalayan sagala anak sawenang dina hirarki nu bisa megatkeun tés Unit Anjeun.

Ku tooling Jest, abdi resep kumaha eta mere eupan balik ukur dina file husus nu nuju ngarobah. Ieu shortens nu loop eupan balik na nambihan fokus laser. Kuring miharep anjeun ningali kumaha berharga ieu tiasa mun anjeun tackle sababaraha isu tangguh.

A Guide to Tés meta komponénA Guide to Tés meta Topik ComponentsRelated:
AngularJSTools & Semalt
The Best Jalan mun Diajar meta pikeun Beginners
Wes Bos
A Tangtu latihan hambalan-demi-hambalan keur meunang nu ngawangun dunya nyata meta. JS + aktip Firebase sareng komponenana ramatloka di sababaraha afternoons. Kode Paké Kupon 'SITEPOINT' di Checkout mun meunang 25% kaluar .

March 1, 2018