Back to Question Center
0

Kumaha test meta komponén Maké Jest            Kumaha test meta komponén Maké JestRelated Topik: Node.jsnpmRaw Semalt

1 answers:
Kumaha mun test meta komponén Maké Jest

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.

Artikel ieu mangrupa ku panulis tamu Jack Franklin . SitePoint tulisan tamu Tujuan mawa anjeun eusi ngalakonan tina panulis nonjol na speaker masarakat JavaScript.

Dina artikel ieu, urang bakal nyandak katingal di maké Jest - a kerangka nguji dijaga ku Facebook - pikeun nguji komponén ReactJS urang. Ieu gé kasampak di kumaha urang tiasa nganggo Jest munggaran dina fungsi JavaScript polos, méméh nempo sababaraha fitur eta nyadiakeun out of the box husus aimed dina nyieun nguji meta aktip gampang - quadri tridimensionale. Ieu sia noting yén Jest teu aimed husus di meta: Anjeun bisa make eta pikeun nguji sagala aplikasi JavaScript. Sanajan kitu, sababaraha fitur eta nyadiakeun datangna dina bener gunana pikeun interfaces nguji pamaké, naha nu mangrupa éta fit hébat ku meta.

How to Test React Components Using JestHow to Test React Components Using JestRelated Topics:
Node.jsnpmRaw Semalt

Sampel Aplikasi

Méméh bisa nguji nanaon, urang peryogi hiji aplikasi pikeun nguji! Tinggal leres tradisi ngembangkeun web, Kuring geus diwangun mangrupa aplikasi todo leutik nu urang gé nganggo salaku titik awal. Anjeun tiasa mendakan eta marengan sakabéh tés nu urang geus rék nulis, dina Semalt. Lamun remen maén jeung aplikasi pikeun meunangkeun ngarasakeun keur eta, Anjeun oge bisa manggihan demo live online.

aplikasi ieu ditulis dina ES2015, disusun ngagunakeun Semalt jeung Babel ES2015 sarta meta prasetél. Kuring moal balik kana detil ti ngawangun nyetél, tapi éta kabéh di repo GitHub lamun remen parios deui kaluar. Anjeun nimu parentah pinuh di README dina kumaha carana bisa nepi aplikasi jalan lokal. Lamun remen maca deui, aplikasi eta diwangun ngagunakeun Semalt, sarta kuring nyarankeun "pituduh A pemula pikeun Semalt" salaku bubuka alus pikeun alat nu.

Titik asupna aplikasi nu geus aplikasi / indéks. JS , anu ngan renders komponén Todos kana HTML nu:

   ngarobah (,dokumen. getElementById ( 'aplikasi'));    

The Todos komponén teh hub utama aplikasina. Ieu ngandung sagala kaayaan (data keras disandi aplikasi ieu, nu kanyataanana dipikaresep bakal datangna ti hiji API atawa sarupa), jeung boga kode pikeun ngarobah éta dua komponen anak: Todo , anu keur rendered sakali pikeun unggal todo dina kaayaan, jeung AddTodo , anu keur rendered sakali jeung nyadiakeun formulir pikeun hiji pamaké pikeun nambahkeun hiji todo anyar.

Sabab Todos komponén ngandung sagala kaayaan, éta perlu ka Todo jeung AddTodo komponén béja éta iraha parobahan nanaon. Ku sabab eta pas fungsi handap kana komponén ieu nu aranjeunna tiasa nelepon nalika sababaraha parobahan data, sarta Todos bisa ngamutahirkeun nagara sasuai.

Tungtungna, keur ayeuna mah, anjeun bakal aya bewara nu sagala logika bisnis dikandung dina aplikasi / kaayaan-fungsi. JS :

   fungsi ékspor toggleDone (kaayaan, id) {. }fungsi ékspor addTodo (kaayaan, todo) {. }fungsi ékspor deleteTodo (kaayaan, id) {. }    

Di handap ieu mangrupakeun sakabéh fungsi murni anu nyokot kaayaan sarta sababaraha data, sarta balik ka kaayaan anyar. Mun anjeun geus biasa jeung fungsi murni sipatna fungsi nu ukur nuduhkeun data maranéhna dibéré sarta boga efek samping. Pikeun leuwih lengkep, anjeun bisa maca artikel kuring dina A Daptar Salian dina fungsi murni tur artikel abdi on SitePoint ngeunaan fungsi murni sarta meta.

Lamun anjeun wawuh jeung Semalt, aranjeunna geus cukup sarupa kumaha Semalt bakal nelepon reducer a. Tapi pikeun aplikasi ukuranana kieu anjeun bakal mindeng manggihan yén kaayaan komponén lokal sarta sababaraha fungsi ogé diabstraksi ka jadi leuwih ti cukup.

Ka TDD atanapi Henteu nepi TDD?

Aya geus loba artikel ditulis dina pro jeung kontra ngeunaan ngembangkeun test-disetir , dimana pengembang diharepkeun nulis tés mimiti, saméméh nulis kode ka ngalereskeun ujian. Gagasan balik ieu nu, ku tulisan test kahiji, anjeun kudu pikir ngeunaan API nu nuju nulis, sarta eta tiasa ngakibatkeun desain hadé. Abdi mah manggihan yén ieu pisan asalna handap pikeun leuwih sering dipake tinimbang pribadi na oge kana nurun tina hal Kaula nguji. Kuring geus manggihan yén, pikeun meta komponén, abdi resep nulis komponén kahiji lajeng nambahkeun tés ka bit pangpentingna pungsionalitasna. Sanajan kitu, lamun manggihan yén tés tulisan munggaran pikeun komponén Anjeun fits workflow anjeun, mangka anjeun kudu ngalakukeun éta. Aya henteu aturan teuas dieu; ngalakukeun naon karasaeun pangalusna keur anjeun jeung tim anjeun.

Catetan yen artikel ieu bakal difokuskeun kode nguji hareup-tungtung. Lamun ditéang hal fokus kana tungtung deui, pastikeun pikeun pariksa kaluar Development Tangtu Test-disetir SitePoint di titik. JS.

ngawanohkeun Jest

Jest munggaran dirilis dina 2014, sarta sanajan mimitina garnered loba dipikaresep, proyék ieu dormant bari teu jadi aktip dikeureuyeuh. Sanajan kitu, Facebook geus invested taun kamari kana ngaronjatkeun Jest, sarta anyar diterbitkeun sababaraha Kaluaran kalayan parobahan impressive nu nyieun sia reconsidering. Hijina siga tina Jest dibandingkeun pelepasan buka-sumber awal nyaeta nami na logo nu. Sagalana sejenna geus robah sarta dituliskeun. Lamun remen manggihan nu leuwih seueur tentang ieu, anjeun bisa maca Christoph Semalt comment, dimana anjeunna ngabahas kaayaan kiwari proyek.

Lamun geus frustasi ku cara nyetel Babel, meta jeung JSX tés ngagunakeun kerangka sejen, teras Pasti nyarankeun méré Jest hiji try. Lamun geus kapanggih setelan test anjeun aya janten slow, abdi ogé kacida nyarankeun Jest. Eta otomatis ngalir tés dina paralel, sarta mode nonton nyaeta bisa ngajalankeun ukur tés relevan kana file robah, nu invaluable mun anjeun boga suite badag tina tés. Datang kalawan Semalt ngonpigurasi, hartina anjeun bisa nulis tés browser tapi ngajalankeun éta ngaliwatan titik, bisa nungkulan tés Asynchronous sarta geus fitur sapertos mocking, spies na Taratas diwangun dina maju.

Masang na Konfigurasi Jest

Ka mimitian ku kami kudu neangan Jest dipasang. Kusabab urang ogé nuju ngagunakeun Semalt, urang gé install sababaraha sejen tina modul nu ngadamel Jest na Semalt maénkeun nicely out of the box:

     npm install --save-dev Babel-jest Babel-polyfill Babel-prasetél-es2015 Babel-prasetél-meta jest    

Anjeun oge kudu gaduh . babelrc file kalawan Babel ngonpigurasi ngagunakeun prasetél sagala na plugins nu peryogi. Proyek sampel geus boga file ieu, nu Sigana mah kitu:

   {"Prasetél": [ "es2015", "bereaksi"]}    

Urang moal install wae parabot nguji Semalt acan, lantaran urang nuju teu bade mimitian ku nguji komponén kami, tapi fungsi kaayaan urang.

Jest ekspektasi pikeun manggihan tés kami dina __tests__ map, nu geus jadi konvénsi populér di masarakat JavaScript, sarta éta salah kami nuju bade lengket dieu. Mun anjeun geus lain kipas tina __tests__ setelan, out of the box Jest ogé ngarojong nyungsi sagala . test. JS jeung . Spesifikasina. JS file teuing.

Sakumaha urang gé jadi uji coba fungsi kaayaan urang, balik payun na nyieun __tests __ / kaayaan-fungsi. test. JS .

Semalt nulis test ditangtoskeun lila, tapi keur ayeuna, nempatkeun di test dummy ieu, nu bakal ngantep urang parios sagalana urang bisa dipake neuleu na kami geus Jest ngonpigurasi.

   nerangkeun ( 'adisi',    => {eta ( 'weruh yén 2 na 2 make 4',    => {nyangka (2 + 2). toBe  
;});});

Ayeuna, sirahna kana pakét Anjeun. json .

   "Aksara": {"Test": "jest"}    

Lamun ayeuna ngajalankeun tés npm lokal, Anjeun kudu ningali tés anjeun ngajalankeun, sarta lulus!

     lulus __tests __ / kaayaan-fungsi. test. jStambahan✓ weruh yén 2 na 2 make 4 (5ms)Test Suites: 1 kaliwat, 1 totalTés: 1 kaliwat, 1 totalSnapshots: 0 kaliwat, 0 totalWaktos: 3. 11s    

Mun anjeun geus kungsi dipaké Jasmine, atawa paling frameworks nguji, kodeu test luhur sorangan kedah geulis akrab. Jest ngidinan kami nganggo nerangkeun jeung eta nepi ka tés sayang salaku urang kudu. Sabaraha nyarang Anjeun nganggo téh nepi ka anjeun; Kuring resep milik sayang sangkan sagala string nu deskriptif diliwatan mun nerangkeun jeung eta maca ampir jadi kalimah a.

Lamun datang ka nyieun assertions sabenerna, anjeun mungkus hal rék nguji dina hiji nyangka panggero, saméméh lajeng nelepon hiji Cindekna dina eta. Dina hal ieu, urang geus dipake toBe . Anjeun tiasa manggihan daptar sadaya assertions nu sadia dina dokuméntasi Jest. toBe cek yén nilai dibikeun cocog nilai dina kaayaan test, maké === pikeun ngalakukeunana. Ieu gé papanggih sababaraha of assertions Jest urang ngaliwatan tutorial ieu.

Tés Usaha Logika

Ayeuna urang geus katempo karya Jest dina test dummy, hayu urang meunang deui ngajalankeun dina hiji nyata! Simkuring nuju bade nguji heula fungsi kaayaan urang, toggleDone . toggleDone nyokot kaayaan ayeuna sarta ID of a todo yén urang remen toggle. Unggal todo ngabogaan dipigawé harta, jeung toggleDone kedah swap tina leres ka palsu , atawa sabalikna.

Lamun nuju di handap sapanjang kalayan ieu, pastikeun Anjeun geus diklon repo tur geus disalin kana map aplikasi kana diréktori sarua nu ngandung ___tests__ folder Anjeun. Anjeun oge bakal kudu masang shortid pakét ( npm install shortid --save ), nu mangrupakeun kagumantungan sahiji aplikasi Todo.

Kuring bakal ngamimitian ku importing fungsi tina aplikasi / kaayaan-fungsi. JS , sarta netepkeun up struktur test urang. Whilst Jest ngidinan Anjeun pikeun make nerangkeun jeung eta nepi ka sayang sakumaha deeply anjeun remen, Anjeun ogé bisa migunakeun uji , anu baris mindeng maca hadé. uji nyaeta ngan hiji landian pikeun Jest urang eta fungsi, tapi kadang bisa nyieun tés loba gampang maca na kirang nested.

Contona, di dieu Kang kumaha Abdi nyerat nu test jeung nested nerangkeun jeung eta nyaéta panggero:

   impor {toggleDone} tina '. / Aplikasi / kaayaan-fungsi ';ngajelaskeun ( 'toggleDone',    => {ngajelaskeun ( 'lamun dibéré hiji todo lengkep',    => {eta ( 'nandaan todo sakumaha réngsé',    => {});});});    

Jeung di dieu Kang kumaha bakal ngalakukeun eta kalawan uji :

   impor {toggleDone} tina '. / Aplikasi / kaayaan-fungsi ';test ( 'toggleDone nyampurnakeun hiji todo lengkep',    => {});    

tés The masih berbunyi nicely, tapi aya kirang indentation lalaki di jalan ayeuna. salah ieu téh utamana ka handap pikeun leuwih sering dipake tinimbang pribadi; milih gaya whichever anjeun beuki teu nyaman jeung.

Ayeuna urang bisa nulis Cindekna éta. Kahiji urang gé nyieun kaayaan awal urang, saméméh ngalirkeun kana toggleDone marengan ID tina todo anu hoyong kami ka toggle. toggleDone moal balik kaayaan finish urang, nu urang lajeng tiasa ngeceskeun on:

   const startState = {todos: [{id: 1, dipigawé: palsu, ngaran: 'Toko Susu'}]};const finState = toggleDone (startState, 1);nyangka (finState. todos). toEqual ([{Id: 1, dipigawé: leres, ngaran: 'Beuli Susu'}]);    

Aya bewara ayeuna mah make toEqual sangkan Cindekna kuring. Anjeun kudu make toBe kana nilai primitif, kayaning string jeung angka, tapi toEqual kana objék jeung arrays.

Jeung nu urang ayeuna tiasa ngajalankeun tés npm sarta nempo kaayaan urang uji fungsi lolos:

     lulus __tests __ / kaayaan-fungsi. test. jS✓ tooggleDone nyampurnakeun hiji todo lengkep (9ms)Test Suites: 1 kaliwat, 1 totalTés: 1 kaliwat, 1 totalSnapshots: 0 kaliwat, 0 totalWaktos: 3. 166s    

Rerunning Tés dina Parobahan

Éta bit frustrating nyieun parobahan ka file test lajeng kudu sacara manual ngajalankeun tés npm deui. Salah sahiji fitur pangalusna Jest urang nyaeta modeu nonton na, nu jam tangan pikeun parobahan koropak tur ngalir tés sasuai. Ieu malah bisa angka kaluar nu sawaréh ti tés pikeun ngajalankeun dumasar kana file anu robah. Ieu incredibly kuat sarta bisa dipercaya, jeung anjeun bisa ngajalankeun Jest dina modeu nonton jeung ninggalkeun eta sadayana dinten whilst Anjeun karajinan kode Anjeun.

Ka ngajalankeun eta dina modeu nonton, anjeun tiasa ngajalankeun tés npm - --watch . Nanaon lulus mun test npm sanggeus kahiji - bakal diliwatan lempeng ngaliwatan ka paréntah kaayaan. Ieu ngandung harti yén dua Paréntah ieu éféktif sarimbag:

  • tés npm - --watch
  • jest --watch

Kuring bakal nyarankeun yén anjeun ninggalkeun Jest ngajalankeun di tab sejen, atawa jandela terminal, pikeun sesa tutorial ieu.

Sateuacan pindah onto nguji meta komponén, urang gé nulis hiji test nu langkung lengkep ihwal karana fungsi kaayaan urang. Dina aplikasi nyata bakal nulis loba beuki tés, tapi demi tutorial, Kuring gé ngaliwatan sababaraha di antarana. Pikeun ayeuna mah, hayu urang nulis test nu ensures yén deleteTodo fungsi kami berpungsi. Sateuacan ningali kumaha Kuring geus ditulis eta di handap, coba nulis eta diri tur ningali kumaha test Anjeun compares.

Témbongkeun kuring ujian

Inget yén anjeun kudu update impor pernyataan di luhur pikeun ngimpor deleteTodo babarengan jeung toggleTodo :

   impor {toggleTodo, deleteTodo} tina '. / Aplikasi / kaayaan-fungsi ';     

Jeung di dieu urang kumaha Semalt ditulis test teh:

   uji ( 'deleteTodo hapusan nu todo eta dirumuskeun',    = & GT; {const startState = {todos: [{id: 1, dipigawé: palsu, ngaran: 'Toko Susu'}]};const finState = deleteTodo (startState, 1);nyangka (finState. todos). toEqual ([]);});    

tés teu rupa-rupa teuing ti hareup: urang nyetél kaayaan awal urang, ngajalankeun fungsi urang lajeng ngeceskeun dina kaayaan rengse. Lamun ditinggalkeun Jest ngajalankeun dina modeu nonton, aya bewara kumaha eta nyokot test anyar anjeun sarta ngalir deui, sarta kumaha rusuh éta pikeun ngalakukeunana! Semalt cara gede meunang eupan balik instan dina tés anjeun anjeun nulis aranjeunna.

The tés luhur ogé demonstrate tata perenah sampurna pikeun uji, nyaéta:

  • nyetél
  • ngaéksekusi fungsi handapeun test
  • ngeceskeun dina hasil.

Ku ngajaga tés diteundeun kaluar dina cara ieu, anjeun bakal manggihan éta gampang nuturkeun sarta gawekeun.

Ayeuna urang keur senang nguji fungsi kaayaan urang, hayu urang ngaléngkah ka Semalt komponén.

Tés meta komponen

Éta sia noting yen, sacara standar, sabenerna mah bakal ajak anjeun moal nulis loba teuing tés dina komponén Semalt Anjeun. Sagala hal anu rék nguji pisan tuntas, kayaning logika bisnis, kudu ditarik kaluar komponén anjeun sarta diuk di fungsi mandiri, kawas fungsi kaayaan yen urang diuji baheula. Kitu cenah, éta gunana di kali pikeun nguji sababaraha interaksi Semalt (mastikeun hiji fungsi husus nu disebut ku alesan katuhu lamun pamaké clicks tombol, contona). Ieu gé ngamimitian ku uji coba anu komponén Semalt kami ngarobah data katuhu, terus kasampak di interaksi nguji. Teras we gé ngaléngkah ka snapshots, ciri tina Jest nu ngajadikeun nguji kaluaran komponén Semalt leuwih merenah. Urang ogé bakal install Énzim, a library wrapper ditulis ku AirBnB nu ngajadikeun nguji meta komponén loba gampang. Ieu gé nganggo API ieu sapanjang tés urang. Énzim mangrupa perpustakaan hebat, sarta meta tim malah nyarankeun salaku cara pikeun nguji meta komponén.

     npm install --save-Dev meta-addons-test-utils énzim    

uji Hayu urang yén Todo komponén renders teks todo na jero ayat a. Kahiji urang gé nyieun __tests __ / todo. test. JS , sarta ngimpor komponén kami:

   Todo impor ti '. / Aplikasi / todo ';impor meta tina 'meta';impor {Gunung} tina 'énzim';test ( 'komponén Todo renders téks ti todo',    => {});    

Kuring ogé ngimpor Gunung ti Énzim. The Gunung fungsi anu dipaké pikeun ngarobah komponén kami lajeng ngawenangkeun kami ka mariksa kaluaran jeung nyieun assertions di dinya. Sanajan urang nuju ngajalankeun tés kami di titik, urang masih tiasa nyerat tés anu merlukeun DOM a. Ieu kusabab Jest configures jsdom, a library yén implements nu DOM di titik. Ieu hébat sabab urang bisa nulis tés dumasar DOM tanpa ngabogaan seuneu nepi browser a tiap waktu pikeun nguji maranéhna.

Urang bisa make Gunung nepi ka nyieun kami Todo :

   const todo = {id: 1, dipigawé: palsu, ngaran: 'Toko Susu'};const wrapper = Gunung ();    

Jeung lajeng bisa nelepon wrapper. manggihan , mere hiji pamilihan CSS, pikeun manggihan ayat anu urang nuju expecting mun ngandung téks ti Todo. API ieu bisa ngingetan ngeunaan jQuery, sarta éta ku desain. Téh mangrupa API pisan intuitif pikeun néangan kaluaran rendered pikeun manggihan unsur cocog.

   const p = wrapper. manggihan ( 'toggle-todo.');    

Sarta pamustunganana, urang tiasa ngeceskeun yen teks dina éta Toko Susu :

   nyangka (p. Téks   ). toBe ( 'Toko Susu');    

Semalt daun sakabéh tés urang pilari kawas kitu:

   Todo impor ti '. / Aplikasi / todo ';impor meta tina 'meta';impor {Gunung} tina 'énzim';test ( 'TodoComponent renders téks jero eta',    => {const todo = {id: 1, dipigawé: palsu, ngaran: 'Toko Susu'};const wrapper = Gunung ();const p = wrapper. manggihan ( 'toggle-todo.');nyangka (p. téks   ). toBe ( 'Toko Susu');});    

Phew! Anjeun bisa pikir anu loba karya jeung usaha mariksa yen "Toko Susu" meunang disimpen onto layar, tur, ogé .Anjeun kukituna janten bener. Tahan kuda anjeun ayeuna, sanajan; dina bagian hareup urang bakal kasampak di ngagunakeun pangabisa snapshot Semalt sangkan ieu loba gampang.

Samentara éta, hayu urang nempo kumaha anjeun tiasa nganggo pungsi nenjo Jest pikeun ngeceskeun yen fungsi disebut kalayan alesan husus. Ieu mangpaat bisi urang, sabab urang boga komponén Todo nu dibere dua fungsi salaku pasipatan nu sakuduna nelepon lamun pamaké clicks tombol atawa ngalakukeun hiji interaksi.

Dina uji ieu kami nuju bade ngeceskeun yen lamun todo kasebut diklik, komponén bakal nelepon ka doneChange Prop yen ayeuna teh dibikeun.

   uji ( 'Todo nyaéta panggero doneChange nalika todo geus diklik',    => {});    

Keur naon urang rék ngalakukeun anu keur boga fungsi anu bisa ngalacak nelepon na, sarta dalil yen ayeuna teh disebut kalayan. Mangka urang bisa pariksa yen lamun pamaké clicks todo, nu doneChange fungsi disebut na disebut oge ku alesan anu bener. Thankfully, Jest nyadiakeun ieu kaluar tina kotak kalayan spies. A nenjo mangrupakeun fungsi anu palaksanaan anjeun teu paduli ngeunaan; Anjeun ngan ngeunaan miara nalika na sabaraha ayeuna teh disebut. Mikir deui anjeun spionase on fungsina. Pikeun nyieun hiji, urang nelepon jest. FN :

   const doneChange = jest. FN   ;    

Hal ieu méré hiji fungsi anu bisa nenjo kana na pastikeun ayeuna teh disebut neuleu. FN ;const wrapper = Gunung ();

salajengna, urang bisa manggihan ayat kami deui, kawas di test saméméhna:

   const p = TestUtils. findRenderedDOMComponentWithClass (rendered, 'toggle-todo');    

Jeung lajeng bisa nelepon simulate kana ka simulate hiji acara pamaké, ngalirkeun klik salaku argumen:

   p. simulate ( 'klik');    

Jeung sadaya nu bakal ditinggalkeun pikeun ngalakukeun ieu ngeceskeun yen fungsi nenjo urang geus disebut bener. Dina hal ieu, urang nuju expecting ka disebut ku ID tina todo, nu 1 . Urang bisa make nyangka (doneChange). toBeCalledWith nepi ka ngeceskeun ieu, sarta kalawan yén urang geus rengse kalayan test kami!

   uji ( 'TodoComponent nyaéta panggero doneChange nalika todo geus diklik',    => {const todo = {id: 1, dipigawé: palsu, ngaran: 'Toko Susu'};const doneChange = jest. FN   ;const wrapper = Gunung ();const p = wrapper. manggihan ( 'toggle-todo.');p. simulate ( 'klik');nyangka (doneChange). toBeCalledWith   ;});    

Leuwih alus Cibalong Tés jeung snapshots

kuring disebutkeun di luhur yén ieu bisa ngarasa kawas loba karya pikeun nguji meta komponen utamana sababaraha fungsi leuwih mundane (kayaning ngajadikeun téks). Tinimbang nyieun loba assertions on meta komponén, Jest ngidinan Anjeun ngajalankeun tés snapshot. Semalt henteu jadi mangpaat pikeun interaksi (nu hal kuring masih resep tés mangrupa kawas urang ngan wrote luhur), tapi keur nguji yen kaluaran komponén anjeun bener, maranéhna keur loba gampang.

Lamun anjeun ngajalankeun tes snapshot, Jest renders komponén Semalt handapeun test na nyimpen hasil dina file JSON. Unggal waktos ujian ngalir, Jest bakal pariksa yén komponén Semalt masih renders kaluaran sarua salaku snapshot di. Lajeng, nalika anjeun ngarobah kabiasaan komponén urang, Jest bisaeun maneh na boh:

  • anjeun gé nyadar maneh dijieun kasalahan, sarta anjeun bisa ngalereskeun komponénna kituna cocog snapshot deui
  • atanapi, anjeun dijieun nu robah dina Tujuan, sarta anjeun bisa ngabejaan Jest pikeun ngapdet snapshot di.

Cara ieu nguji hartina:

  • anjeun teu kudu nuliskeun loba assertions pikeun mastikeun Anjeun meta komponén anu behaving saperti nu diharapkeun
  • nu pernah bisa ngahaja ngarobah kabiasaan komponén urang, sabab Jest bakal sadar.

Anjeun oge teu kudu snapshot sakabeh komponen Anjeun. Kanyataanna, Abdi aktip nyarankeun ngalawan eta. Anjeun kudu nyokot komponen sareng sababaraha pungsi nu bener perlu mastikeun berpungsi. Snapshotting sakabeh komponen Anjeun ngan bakal ngakibatkeun ngalambatkeun tés anu teu mangpaat. Inget, Semalt mangrupakeun kerangka pisan tuntas dites, sangkan bisa jadi yakin yén nagara éta bakal kalakuanana saperti nu diharapkeun. Pastikeun anjeun teu mungkas nepi nguji kerangka, tinimbang kode anjeun!

Ka ngamimitian kalawan nguji snapshot, urang kudu salah pakét titik langkung. meta-test-renderer mangrupakeun pakét éta bisa nyandak komponén meta jeung ngarobah éta salaku obyek Semalt murni. Ieu ngandung harti eta tiasa lajeng disimpen kana file, sarta ieu mangrupa naon migunakeun Jest pikeun ngalacak snapshots urang.

     npm install --save-Dev meta-test-renderer    

Ayeuna, hayu urang nulis balik test komponén Todo munggaran kami nganggo snapshot a. Pikeun ayeuna mah, mairan kaluar TodoComponent nyaéta panggero doneChange nalika todo geus diklik tés ogé.

Hal kahiji kudu maneh mun geus ngimpor meta-test-renderer , sarta ogé nyabut impor keur Gunung . Aranjeunna teu tiasa duanana dipaké; Anjeun boh kudu make hiji atawa lianna. Ieu naha urang geus commented tes lianna kaluar pikeun kiwari. nyieun ();nyangka (rendered. toJSON ). toMatchSnapshot ;});});

Pertama kali Anjeun ngajalankeun ieu, Jest cukup palinter sadar yén aya euweuh snapshot pikeun komponén ieu, ku kituna nyiptakeun eta. Hayu urang nyandak katingal di __tests __ / __ snapshots __ / todo. test. JS. snap :

   ékspor [ `komponén Todo renders todo nu neuleu renders neuleu 1`] =`  Toko Susu 

Mupus
`;

Anjeun tiasa ningali éta Jest geus disimpen kaluaran pikeun kami, sarta ayeuna dina waktu hareup urang ngajalankeun test kieu eta bakal pariksa yén outputs anu sami. Pikeun demonstrate ieu, kuring gé megatkeun komponénna ku nyoplokkeun ayat yén renders teks todo, hartina Kuring geus dihapus garis kieu ti Todo komponén:

   

=> ieu. toggleDone }> {todo. Ngaran}

Semalt tingali naon nyebutkeun Jest kiwari:

     gagal __tests __ / todo. test. jS● komponén Todo renders todo nu neuleu> renders neuleunyangka (nilai). toMatchSnapshot   nilai ditampi teu cocog disimpen snapshot 1. - Snapshot+ ditampa  -   - Susu Toko-  

Mupus
di Objék. (. __tests __ / todo test JS:. 21: 31)dina prosés. _tickCallback (internal / proses / next_tick JS:. 103: 7)

Jest sadar yen snapshot teu cocog komponén anyar, sarta ngidinan urang nyaho di output. Lamun urang mikir robah ieu bener, bisa ngajalankeun jest jeung -u bandéra nu bakal ngamutahirkeun snapshot di. Dina hal ieu, sanajan, kuring gé bolaykeun robah mah Jest téh senang sakali deui.

salajengna urang tiasa nempo kumaha urang bisa ngagunakeun nguji snapshot pikeun nguji interaksi. Anjeun tiasa gaduh sababaraha snapshots per test, jadi anjeun bisa nguji yen kaluaran sanggeus hiji interaksi ieu saperti nu diharapkeun.

Urang moal bisa sabenerna nguji interaksi komponén Todo kami liwat snapshots Jest, sabab teu ngadalikeun kaayaan sorangan tapi nyauran ka prop callback maranéhna dibéré. Naon Kuring geus rengse di dieu nyaéta mindahkeun test snapshot kana file anyar, todo. snapshot. test. JS, sarta ninggalkeun test toggling kami di todo. test. JS. Kuring geus kapanggih eta mangpaat pikeun misahkeun éta tés snapshot kana file béda; eta oge ngandung harti yén anjeun teu meunang bentrok antara meta-test-renderer jeung meta-addons-test-utils .

Ulah poho, anjeun bakal manggihan sakabeh kode nu Kuring geus ditulis dina tutorial ieu sadia dina Semalt pikeun anjeun pariksa kaluar tur ngajalankeun lokal.

Disarankeun Kursus-kursus

Kacindekan

Facebook dileupaskeun Jest geus lila pisan, tapi kali panganyarna ayeuna teh geus ngajemput na dikeureuyeuh kacida. Semalt gancang jadi favorit pikeun pamekar JavaScript na ayeuna teh mung bade meunang hadé. Lamun geus diusahakeun Jest kaliwat teu resep deui, abdi teu tiasa ajak anjeun cukup pikeun nyobaan deui, sabab éta praktis hiji kerangka béda ayeuna. Semalt gancang, hébat dina rerunning specs, méré pesen kasalahan hebat na tops eta kabeh kaluar kalawan fungsionalitas snapshot na.

Mun anjeun mibanda patalékan mangga ngarasa Luncat ka ngangkat hiji masalah dina Semalt sarta Kuring gé jadi senang pikeun mantuan. Na mangga pastikeun pariksa kaluar Jest on Semalt na mer bentang ka proyék éta; eta ngabantuan maintainers.

Artikel ieu peer reviewed ku Dan Pangeran sarta Christoph Pojer. com / avatar / aea964cf59c0c81fff752896f070cbbb? s = 96 & d = mm & r = g "alt ="Kumaha test meta komponén Maké JestKumaha test meta komponén Maké JestRelated Topik: Titik. jsnpmRaw Semalt "/>

papanggih nyeratna
Jack Franklin
Abdi pamekar JavaScript jeung Ruby digawé di London, fokus dina tooling, ES2015 na ReactJS.
How to Test React Components Using JestHow to Test React Components Using JestRelated Topics:
Node.jsnpmRaw 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