Back to Question Center
0

Хэрмийг ашиглан реактив бүрэлдэхүүн хэсгүүдийг хэрхэн турших вэ            JestRelated Сэдэв ашиглан ашиглан реактив бүрэлдэхүүн хэсгүүдийг хэрхэн турших вэ: Node.jsnpmRaw Semalt

1 answers:
Идэвхтэй бүрэлдэхүүн хэсгүүдийг хэрхэн турших вэ

React нь өндөр чанартай, гүнзгий танилцуулга бол, та Канадын бүрэн стек хөгжүүлэгч Wes Bos өнгөрсөн байж чадахгүй. Энд хичээлээ оруулаад SITEPOINT ашиглан 25% off авах, SitePoint-ийг дэмжихэд туслах.

Энэ нийтлэл бол зочин зохиогч Жак Франклин . SitePoint зочдын бичлэгүүд нь таныг зохиол бүтээлийн зохиогчид болон JavaScript-ийн хэлтсээс сонирхолтой агуулгатай танилцуулах зорилготой.

Энэ өгүүлэлд бид Facebook-ийн эзэмшдэг Jest-a-ийн туршилтын тогтолцоог ашиглан харна уу. Бид эхлээд энгийн JavaScript функц дээр хэрхэн Jest-ийг хэрхэн ашиглах талаар авч үзэх болно. React аппликейшн туршихад илүү хялбар болгохын тулд хайрцагнаас гаргаж авсан функцуудын заримыг харцгаая. Jest нь React дээр тусгайлан чиглүүлдэггүйг тэмдэглэх нь зүйтэй: Та үүнийг ашиглан ямар ч JavaScript програмуудыг туршиж үзэх боломжтой. Гэсэн хэдий ч, энэ нь хэд хэдэн онцлог шинж чанарыг шалгах хэрэглэгчийн интерфэйс нь маш тохиромжтой байдаг тул энэ нь React нь маш их тохиромжтой юм.

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

Дээж авах

Ямар нэгэн зүйлийг туршиж үзэхээсээ өмнө бид туршилтын програм хэрэгтэй! Вэб хөгжүүлэх уламжлалаа хадгалан үлдэхийн тулд, би эхлээд жижиг програмыг барьсан бөгөөд бид эхлэх цэг болгон ашиглах болно. Үүнийг бид өөрсдийн бичиж байгаа бүх сорилын хамт, Semalt дээр олж чадна. Хэрвээ та програмыг ашиглан үүнийг мэдрэхийн тулд тоглохыг хүсч байвал, та шууд онлайнаар demo-г олж болно.

Энэхүү өргөдлийг ES2015 дээр бичсэн бөгөөд Semalt ашиглан бичсэн Babel ES2015 ба React presets. Би бүтээсэн бүтцийн талаар дэлгэрэнгүй мэдээлэл авахгүй, гэхдээ энэ бүгдийг шалгахыг хүсэж байгаа бол GitHub репо дахь бүх зүйл байна. Та апп-ыг орон нутагтаа хэрхэн ажиллуулах талаар README-д бүрэн зааварчилгааг олох болно. Хэрэв та илүү ихийг уншихыг хүсвэл програмыг Semalt ашиглан бүтээсэн бөгөөд би "Semalt-ийн Beginner-ийн гарын авлага" -ийг хэрэгсэлд сайн танилцуулахыг санал болгож байна.

Програмын нэвтрэх цэг нь апп / индекс юм. js нь зөвхөн Todos бүрэлдэхүүн хэсгийг бүрэлдэхүүн хэсэг HTML болгон хувиргадаг:

   render (,баримт бичиг. getElementById ('app'));    

Todos бүрэлдэхүүн хэсэг нь програмын гол төв юм. Энэ нь бүх төрлийг агуулдаг (энэ програмыг хатуу кодлогдсон өгөгдөл нь API эсвэл үүнтэй ижил төстэй байж болох юм) бөгөөд хоёр хүүхдийн бүрдэл хэсгүүдийг кодчилох код байдаг: Todo AddTodo , нэг удаа өгөгдөнө. Ингэснээр хэрэглэгч шинэ хэлбэр нэмэх болно.

Todos бүрэлдэхүүн нь бүх мужийг агуулдаг тул ямар нэгэн өөрчлөлт гарвал Todo болон AddTodo бүрэлдэхүүн хэсгүүдийг мэдэгдэх шаардлагатай. Тиймээс зарим өгөгдөл өөрчлөгдөхөд дуудаж болох эдгээр бүрэлдэхүүн хэсгүүдийн функцууд руу шилждэг. Todos нь төрийг зохих ёсоор шинэчлэх боломжтой.

Эцэст нь хэлэхэд, одоо бизнесийн бүх логик нь апп / төлөвт багтсан болохыг анзаарах болно. js :

   экспортын үйл ажиллагаа toggleone (state, id) {. }экспортын функц addTodo (төл, todo) {. }export function deleteTodo (state, id) {. }    

Эдгээр нь төр ба зарим өгөгдлийг авдаг бүх цэвэр функцууд бөгөөд шинэ төлөвийг буцаана. Хэрэв та цэвэр функциональ ойлголтгүй бол тэдгээр нь зөвхөн өгсөн лавлагаа өгөгдөл бөгөөд гаж нөлөө үзүүлэхгүй функцүүд юм. Илүү дэлгэрэнгүйг та "A List Apart" -ын цэвэр функцууд дээр, мөн SitePoint дээрх нийтлэл болон цэвэр функцуудын тухай өгүүллийг уншиж болно.

Хэрэв та Semaltийг мэддэг бол тэд Semtalt-ийг бууруулагч гэж дууддагтай маш төстэй юм. Гэхдээ энэ хэмжээний програмын хувьд та орон нутгийн компаний төлөв байдал, зарим нь сайн хийсвэр функцийг хангалттай байлгахыг байнга олж авдаг.

TDD эсвэл TDD биш?

Туршилтыг засварлах код бичихээсээ өмнө тестийг бичихээр төлөвлөж буй хөгжүүлэгчид сорилд тулгуурласан хөгжүүлэлтийн давуу ба сул талын талаар олон нийтлэл бичсэн байдаг. Үүний цаадах санаа нь та эхлээд тест бичиж, бичиж байгаа API-ийн талаар бодох хэрэгтэй бөгөөд ингэснээр илүү сайн дизайныг гаргах болно. Миний хувьд, энэ нь хувийн сонирхолд нийцдэг, мөн миний сорьж буй зүйл дээр ч хүрч байна. Энэ нь React компонентуудын хувьд эхлээд бүрэлдэхүүн хэсгүүдийг бичих, функцүүдийн хамгийн чухал хэсгүүдэд тестийг нэмэх дуртай. Гэсэн хэдий ч, хэрэв та хичээлийн материалаа эхлээд өөрийн ажлын урсгалын дагуу бичсэн тест хийхийг хүсвэл үүнийг хийх хэрэгтэй. Энд хатуу журам байхгүй байна. Та болон танай багийн хувьд хамгийн сайн мэдэрч байгаарай.

Энэ нийтлэл нь урд талын кодыг туршихад төвлөрнө гэдгийг анхаарна уу. Хэрэв та арын төгсгөлд анхаарлаа хандуулахыг хүсэж байгаа бол SitePoint-ийн шалгалт Node дахь Test-Driven Development шалгалтыг шалгаарай. js.

Jest танилцуулга

Jest анх 2014 онд гарсан бөгөөд хэдийгээр энэ нь анхнаасаа маш их сонирхолтой байсан боловч төсөл идэвхтэй биш байсан. Гэсэн хэдий ч, Facebook нь өнгөрсөн жил Jest-ийг сайжруулахад зориулж хөрөнгө оруулалт хийсэн бөгөөд саяхан хэд хэдэн хувилбаруудыг сэтгэгдлийг өөрчилсөн бөгөөд үүнийг дахин хянаж үзэх үнэ цэнэтэй болгожээ. Эхний нээлттэй эхийн хувилбартай харьцуулахад Jest-ийн цорын ганц төсөөтэй байдал нь нэр ба лого юм. Өөр бусад бүх зүйл өөрчлөгдсөн, дахин бичигдсэн. Хэрэв та энэ талаар илүү ихийг мэдэхийг хүсвэл, та Christoph Semalt сэтгэгдэл уншиж, төслийн одоогийн төлөвийг авч үзье.

Хэрэв та Бабель, React, JSX тестийг өөр нэг бүтцийг ашиглан бүтэлгүйтсэн бол Jest-ийг оролдохыг зөвлөж байна. Хэрэв та одоо байгаа туршилтын тохиргоог удаан олж байсан бол би маш их зөвлөж байна. Энэ нь автоматаар тестийг автоматаар ажиллуулдаг бөгөөд түүний цагны горим нь өөрчилсөн файлд хамааралтай зөвхөн тестийг ажиллуулж чаддаг бөгөөд энэ нь танд маш олон сорилуудтай байдаг. Энэ нь Semalt тохируулагдсан бөгөөд та хөтөчийн тестүүдийг бичих боломжтой боловч Node-ээр дамжуулан тэдгээрийг ажиллуулж болно, асинхрон тесттэй байж болох бөгөөд тагнуул, тагнуул, бүтэц зэрэг дэвшилтэт боломжуудтай байдаг.

Jest суулгах ба тохируулах

Эхлэхийн тулд бид Jest суулгаж авах хэрэгтэй. Яагаад гэвэл бид Semalt-ийг ашиглаж байгаа учраас Jest болон Semalt-г хайрцганаас сайн тоглодог өөр модулиудыг суулгана.

     npm суулгах - save-dev babel-jest babel-polyfill babel-preset-es2015 babel-preset-react jest    

Та бас 41 байх хэрэгтэй. babelrc файл нь Babelr -тэй цуг тохируулсан ямар ч presets болон залгаасуудыг ашиглахаар тохируулагдсан. Дээжний төсөл аль хэдийн ийм файлтай байна:

   {"урьдчилан тогтоосон": ["es2015", "хариу үйлдэл"]}    

Бид одоогоор ямар нэг семаль сорилт шинжилгээний хэрэгслийг суулгахгүй, учир нь бид өөрсдийн бүрэлдэхүүн хэсгүүдийг туршихаас эхлэхгүй, харин манай төрийн чиг үүрэг.

Jest бидний тестийг __tests__ фолдерт хайхаар төлөвлөж байна, энэ нь JavaScript нийгэмлэгийн алдартай конвенц болсон бөгөөд энэ нь бид энд үлдэх болно. Хэрэв та __tests__ функцын фен биш бол хайрцаг Jest нь мөн ямар ч ололтыг дэмждэг. Туршилт. js ба . spec. js файлууд бас байдаг.

Бидний терийн чиг уургийг туршихын тулд __теструудийг (state) чиглуулэх хэрэгтэй. Туршилт. js .

Семаль зөв шалгалтыг удалгүй бичиж аваарай, гэхдээ одоохондоо бүх зүйл зөв ажиллаж байгааг шалгах боломжийг бидэнд олгож байгаа энэ дэмий шалгалтанд тавьсан бөгөөд бид Jest тохируулсан байна.

   тайлбарлах ('Нэмэлт',    => {('2 болон 2 make 4',    => {хүлээж байна (2 + 2). toBe  
;});});

Одоо багц руугаа ор. json .

   "скриптүүд": {"шалгалт": "жад"}    

Хэрэв та одоо npm test -ийг локалаар ажиллуулж байгаа бол таны тест ажиллаж байгааг шалгаад, өнгөрөөж болно!

     ТӨГСӨВ. Туршилт. jsНэмэлт✓ 2 ба 2-г 4 (5ms) болгохыг мэддэгТуршилтын курсууд: 1 давсан, 1 нийтШалгалт: 1 удаа, 1 нийтХормын хувилбарууд: 0 дамжуулагдсан, нийт 0 байнаЦаг: 3. 11с    

Хэрэв та Jasmine буюу тестийн ихэнх аргыг хэрэглэж байсан бол дээр дурдсан туршилтын код өөрөө танил байх ёстой. Jest бидэнд 42 ба үүнийг тайлбарлахын тулд үүрний туршилтыг ашиглах боломжийг бидэнд олгодог. Та хэрэглэж байгаа үүрээ хэр зэрэг хийдэг вэ? Би уул уурхайн үүрээ засахыг хүсдэг тул 41 болон 41-т тайлбар өгдөг.

Бодит нотолгоог гаргахдаа та хүлээж буй дотор тест хийхийг хүссэн зүйлээ оруулаад өмнө нь батламж мэдэгдэл хийлгэхээсээ өмнө дуудна. Энэ тохиолдолд бид toBe ашигласан. Та Jest баримт бичигт байгаа бүх мэдэгдлийн жагсаалтыг олж болно. toBe өгөгдсөн утга нь === ашиглан тестийн утгатай таарч байгаа эсэхийг шалгана. Энэ зааварчилгаан дээр бид Jest-ийн батламж мэдэгдэлтэй танилцах болно.

Бизнесийн логикийг шалгах

Одоо бид Jest-ийг дамми шалгалтын ажилд үзсэн. Бид төрийн чиг үүргийнхээ эхнийхийг тестлэх гэж байна toggleDone . toggleDone бидний одоогийн төлөв болон togglele гэсэн ID-г авдаг. Хэсэг бүр хийгдсэн өмчтэй бөгөөд toggleDone нь үнэн руу false

Хэрэв та үүнтэй хамт дагаж байгаа бол, репо үүсгэсэн эсэхээ шалгаарай апп фолдерыг ___tests__ фолдер агуулж байгаа сан руу хуулаарай. Та Todo програмын хамаарал болох shortid багцыг суулгах хэрэгтэй npm суулгах shortid - save ) суулгах хэрэгтэй болно.

Програмыг / 41-н функцээс функцаас оруулж эхлэх болно. js , туршилтын бүтцийг бий болгох. 42-ийг болон 41-т тайлбарлахыг хүсч байгаа шигээ тестийг ашиглах нь илүү тохиромжтой байдаг. test нь зөвхөн Jest-ийн энэ функциас өөр нэртэй байдаг боловч заримдаа тест хийхэд хялбар, бага тоогоор тест хийдэг.

Жишээ нь, энэ тестийг 41 болон үүнийг дуудаж тайлбарлана:

   импортоос {toggDone} аас '. / апп / төрийн чиг үүрэг ';('toggleDone',    => {('төгсөөгүй todo' гэж өгснөөр    => {Энэ нь ('гэж тэмдэглээд дууссан гэж тэмдэглэсэн',    => {});});});    

Үүнийг яаж хийх вэ test :

   импортоос {toggDone} аас '. / апп / төрийн чиг үүрэг ';Туршилт ('toggleDone бүрэн бус бүрэн гүйцэд',    => {});    

Туршилт нь сайн уншиж байгаа боловч одоогоор замдаа гарцгүй байна. Энэ нь гол төлөв хувийн сонирхолд нийцдэг. аль хэв маягт илүү таатай байхыг сонгох.

Одоо бид батламж бичгийг бичиж болно. Эхлээд бид эхлээд эхлэх төлөвөө toggleDone уруу шилжүүлэхээс өмнө, бидний шилжихийг хүсч буй todo ID дугаартай хамт үүсгэх болно. toggleDone нь бидний дуусах төлөвийг буцааж өгөх болно:

   const startState = {todos: [{id: 1, done: false, name: 'Buy Milk'}]};const finState = toggleDone (startState, 1);хүлээж бай. toEqual ([{id: 1, хийсэн: үнэн, нэр: 'Сүү худалдаж ав'}]);    

Одоо би toEqual ашиглан миний батламжийг гаргахын тулд одоо мэдэгдээрэй. Та toBe -ийг тэмдэгтүүд болон тоон зэрэг энгийн командуудаар ашиглах ёстой. Харин обьектууд болон массив дахь toEqual .

Үүнийг бид одоо npm test ажиллуулж, манай функцийн тестийн функцийг шалгаж болно:

     ТӨГСӨВ. Туршилт. js✓ tooggleDone бүрэн бус дууссан (9ms)Туршилтын курсууд: 1 давсан, 1 нийтШалгалт: 1 удаа, 1 нийтХормын хувилбарууд: 0 дамжуулагдсан, нийт 0 байнаЦаг: 3. 166с    

Өөрчлөлтөд хийх сорилтуудыг даван туулах

Тест файл уруу өөрчлөлт хийхийг маш багаар хийдэг бөгөөд дараа нь npm test -ийг гараар ажиллуулах шаардлагатай байдаг. Jest-ийн шилдэг функцуудын нэг бол цагны функц юм. Энэ нь файлын өөрчлөлтүүдийг харж, шалгадаг. Энэ нь өөрчлөгдсөн файл дээр тулгуурлан ямар тестүүдийн аль алиныг нь ажиллуулахыг мэддэг. Энэ нь маш хүчирхэг, найдвартай бөгөөд та Jest-г цагны горимд ажиллуулж, кодоо зохиож байхад өдөржингөө үлдээнэ.

Үүнийг цагны горимд ажиллуулахын тулд (npm test) --watch тушаалыг ажиллуулж болно. Эхлээд - дараагаар тестийн тийш нэвтэрч болох бүх зүйл нь шууд тушаал уруу дамжуулагдана. Энэ нь эдгээр хоёр тушаал нь үр дүнтэй тэнцүү гэсэн үг юм:

  • npm тест - --бүтэн
  • jest --watch

Энэ зааварт үлдсэн Jest-ыг өөр цонхон дээр ажиллуулахыг зөвлөж байна.

React компонентыг туршихаасаа өмнө манай улсын өөр нэг функц дээр нэг нэг тестийг бичих болно. Бодит өргөдлийн дагуу би олон шалгалтыг бичих болно, гэхдээ зааварчилгааны хувьд би тэдгээрийн заримыг нь алгасах болно. Одоо deleteTodo функц ажиллаж байгаа эсэхийг шалгах тест бичье. Би үүнийг хэрхэн бичиж байгааг харахаасаа өмнө өөрийнхөө тестийг харьцуулж үзээрэй.

Тестийг надад үзүүл

toggleTodo -тай хамт устгах -ийг импортлох импортыг мэдэгдлийг шинэчлэх хэрэгтэй гэдгийг санаарай

   import {toggleTodo, deleteTodo} '. / апп / төрийн чиг үүрэг ';     

Семаль энэ шалгалтыг хэрхэн бичсэнийг доор харуулав:

   тест ('deleteTodo үүнийг өгч дуусгавар болгосон',    = & gt; {const startState = {todos: [{id: 1, done: false, name: 'Buy Milk'}]};const finState = deleteTodo (startState, 1);хүлээж бай. toEqual ([]);});    

Тест нь эхнийхээс хэтэрдэггүй. Бид эхний төлөвийг тодорхойлж, функцээ ажиллуулж дараа нь төлөвийг баталгаажуулдаг. Хэрвээ чи цагны горимд ажиллаж байгаа Jest орхисон бол шинэ тестээ хэрхэн ажиллуулж, гүйлгэж, хэр хурдан ажиллахаа мэдэгдээрэй! Сорилтуудаа бичихдээ шалгалтынхаа талаар түргэн шуурхай мэдээллээр хангах гайхалтай арга.

Дээрх туршилтууд нь тестийн төгс төлөвлөгөөтэй байна. Үүнд:

  • тохируулах
  • турших функцийг гүйцэтгэх
  • үр дүн дээр үндэслэв.

Иймэрхүү сорилтыг хийснээр дагах, ажиллахад хялбар байх болно.

Одоо бид төрийн чиг үүргээ туршихдаа баяртай байна, Semalt компонентууд руу шилжицгээе.

Туршилт бүрэлдэхүүн хэсгийн сорилт

Анхдагчаар би таныг Semalt-ийн бүрэлдэхүүн хэсгүүдэд хэтэрхий олон тест бичихгүй байхыг хүсч байна. Бизнес логик гэх мэт маш нарийн тест хийхийг хүссэн ямар ч зүйл танай бүрэлдэхүүн хэсгүүдээс татгалзаж, өмнө нь туршсан төрийн чиг үүргийн адил дангаараа ажиллах болно. Энэ нь зарим тохиолдолд Semalt харилцан үйлчлэлийг шалгахад заримдаа ашигтай байдаг (жишээ нь хэрэглэгч товчлуур дээр товчлох үед зөв функцээр тодорхой функцийг дууддаг эсэхийг шалгах). Бид Semtalt компонент бүрдэл хэсгүүдийг зөв өгөгдлийг шалгаж эхэлснээр тестийн харилцан үйлдлийг ажиглана. Дараа нь бид хормын хувилбарууд руу шилжих болно, Jest-ийн онцлог нь Semalt компонентуудын гаралтыг туршихад илүү тохиромжтой юм. Бид мөн Enzyme-г суулгах болно. Энэ нь AirBnB-ийн бичсэн номын сан юм. Бид энэ шалгалтын туршид API-г ашиглах болно. Enzyme бол гайхамшигтай номын сан бөгөөд React-ийн баг үүнийг React компонентыг турших арга гэж зөвлөж байна.

     npm - save-dev react-addons-test-utils ферментийг суулгах    

Токио бүрэлдэхүүн хэсэг нь догол мөрний доторх түүний бүрэн эхийг үзүүлэхийг үзье. Эхлээд бид __tests __ / todo үүсгэх болно. Туршилт. js , бидний бүрэлдэхүүн хэсгийг импортлодог:

   Тодоос импортлох '. / апп / todo ';импорт 'урвал' -аас хариу урвалд;импорт {холболт} 'энзимээс';test ('Todo бүрэлдэхүүн нь todo-ийн текстийг гаргах',    => {});    

Мөн би Enzyme-аас mount импортыг хийдэг. mount функц нь бидний бүрэлдэхүүн хэсгийг үзүүлэхэд хэрэглэгддэг бөгөөд дараа нь гаралтыг шалгаж, батламж мэдэгдэл хийх боломжийг бидэнд олгодог. Хэдийгээр бид Node-д шалгалтаа хийж байгаа ч гэсэн DOM шаарддаг тестийг бичих боломжтой. Jest нь Jode-ийг Node-д DOM-ийг ашигладаг номын сангийн тохиргоог хийдэг. Энэ нь бид DOM-д суурилсан тестийг шалгахын тулд вэб хөтөч дээр туршиж үзэхгүйгээр бичих боломжтой.

Бид Todo :

үүсгэхийн тулд mount
   const todo = {id: 1, done: false, name: 'Худалдан milk'};const wrapper = mount ();    

Дараа нь бид дугтуйг дуудаж болно. find , үүнийг CSS сонгон шалгаруулагч өгөх, бид Todo-ийн текстийг агуулах хүлээж буй догол мөрийг олох. Энэ API нь jQuery-ийн талаар танд сануулах болно, энэ нь дизайнаар юм. Энэ нь тохирох элементүүдийг хайж олсон гаралтыг хайхад маш хялбар API юм.

   const p = гүйцэтгэл. find ('. toggle-todo');    

Эцэст нь хэлэхэд текст дотор Сүү худалдаж авах :

   хүлээгдэж буй (текст   ). toBe ('Сүү худалдаж авах');    

Семаль бидний бүх сорилтыг иймэрхүү байдлаар харуулдаг:

   Тодоос импортлох '. / апп / todo ';импорт 'урвал' -аас хариу урвалд;импорт {холболт} 'энзимээс';test ('TodoComponent дотор текстийг харуулдаг',    => {const todo = {id: 1, done: false, name: 'Худалдан Сүү'};const wrapper = mount ();const p = wrapper. find ('. toggle-todo');хүлээгдэж буй (текст    хэсэг. toBe ('Сүү худалдаж авах');});    

Пи! "Сүү худалдаж авах" дэлгэцийг дэлгэцэн дээр тавиад шалгаж үзээрэй гэж бодож байж магадгүй гэж бодож байж магадгүй юм. Хэдийгээр морьдоо барьж аваарай. Дараагийн хэсэгт бид энэ нь илүү хялбар болгохын тулд Semalt snapshot-ийн чадварыг ашиглах болно.

Одоогоор Jest-ийн тагнуулын функцийг функцыг тусгай аргументуудаар дуудаж болохыг ямагт харъя. Энэ нь бидэнд хэрэглэгддэг Todo бүрэлдэхүүнтэй байдаг учир нь хоёр функцыг шинж чанар гэж үздэг тул хэрэглэгчийн товчлуурыг дарах эсвэл харилцан үйлдлийг гүйцэтгэх үед дуудах хэрэгтэй.

Энэ шалгалтанд бид todo товшсон үед бүрэлдэхүүн хэсэг нь өгөгдсөн doneChange тулгуурыг гэж нэрлэнэ.

   тест ('Todo дуудлага хийгдэж дууссан үед Chang хийсэн дуудлага',    => {});    

Бид юу хийхийг хүсдэг вэ гэвэл бид түүний дуудлага, түүний нэрлэсэн аргуудыг хянах боломжтой функцтэй байх явдал юм. Дараа нь бид хэрэглэгч todo дээр дарах үед doneChange функцыг дуудаж бас зөв аргументуудаар дууддаг эсэхийг шалгах боломжтой. Товчхондоо Jest нь тагнуулын хайрцагт үүнийг гаргаж өгдөг. А тагнуул нь таны хэрэгжүүлж буй хэрэг биш, түүний үүрэг гүйцэтгэдэг функц юм; Та хэзээ, хэрхэн үүнийг дуудаж байгаад л анхаардаг. Функц дээр тагнахдаа үүнийг бодоод үзээрэй. Нэгийг бүтээхийн тулд бид дууддаг. fn :

   const doneChange = jest. fn   ;    

Энэ нь биднийг тагнах боломжтой бөгөөд энэ нь зөв дуудагдсан эсэхийг шалгах боломжийг олгодог. fn ;const wrapper = mount ();

Дараа нь бид өмнөх догол мөрийг дахин олж болно:

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

Дараа нь 41 дээр дарж гэсэн аргументээр товшоод

   х. ('дарж')    

Бидний хийх үлдсэн бүх зүйл бол бидний тагнуулын функцыг зөв гэж нэрлэдэг. Энэ тохиолдолд бид 1 нь todo-ийн ID дугаараар дуудагдахыг хүлээж байна. Бид найдвартай (doneChange) ашиглах боломжтой. toBeCalledWith үүнийг батлахын тулд бид шалгаж байна.

   тест ('TodoComponent дуудлага хийгдэж дууссаны дарааChange хийсэн click',    => {const todo = {id: 1, done: false, name: 'Худалдан Сүү'};const хийсэн doneChange = jest. fn   ;const wrapper = mount ();const p = wrapper. find ('. toggle-todo');х. ('дарж')хүлээж байна (doneChange). toBeCalledWith   ;});    

Хормын хувилбаруудтай илүү сайн бүрэлдэхүүн хэсэг шалгах

Дээр дурдсанчлан энэ нь React компонентыг туршихад маш их ажил мэт санагдаж магадгүй, ялангуяа илүү ердийн ажиллагаатай зарим функцүүд (текстийг үзүүлэх гэх мэт). React компонент дээр их хэмжээний батламж мэдэгдэл хийхээс илүүтэйгээр Jest нь танд хормын хувилбарыг турших боломжийг олгодог. Semalt нь харилцан үйлчлэлд маш их ач холбогдол өгөхүйц биш юм (энэ тохиолдолд би дээр бичсэн шиг тестийг илүүд үздэг), гэхдээ таны бүрэлдэхүүн хэсгийн гаралт зөв эсэхийг шалгахад илүү хялбар болно.

Хэрэв та хормын хувилбар тест хийхэд Jest нь Semalt компонентийг туршилтад оруулж, үр дүнг JSON файлд хадгалдаг. Тестийн туршид Jest нь Semtext компонент хэвээр нь хормын хувилбартай ижил гаралтыг шалгадаг. Дараа нь бүрэлдэхүүн бүрэлдэхүүнийн зан байдлыг өөрчлөх үед Jest танд дараахь зүйлийг хэлж өгөх болно:

  • та алдаа гаргасан гэдгээ ойлгох болно, мөн та хормын хувилбартай дахин тааруулахын тулд бүрэлдэхүүн хэсгийг засах боломжтой
  • юм уу эсвэл та зорилгодоо өөрчлөлт хийснийхээ дараа хормын хувилбараа шинэчлэхийг хэлж чадна.

Туршилтын энэ арга нь:

  • та React-ийн бүрэлдэхүүнийг хүлээж байгаа шигээр ажиллахын тулд маш олон таамаглал бичих шаардлагагүй
  • чи Jest-ыг ойлгож байгаа учраас бүрэлдэхүүн хэсгийг нь өөрчилж чаддаггүй.

Та бас өөрийн бүрэлдэхүүн хэсгүүдийг хоромдуулах шаардлагагүй. Үнэндээ би үүнийг эсрэг идэвхтэй санал болгов. Та бүрэлдэхүүн хэсгүүдийг сонгон ажиллуулж байгаа эсэхийг баталгаажуулахын тулд шаардлагатай зарим функцийг сонгох хэрэгтэй. Бүх бүрэлдэхүүн хэсгүүдээ хоромхон зуурт хэрэглэх нь үр дүнгүй болоход хүргэдэг. Семаль нь маш нарийн шалгагдсан бүтэцтэй тул санах гэж байгаа мэт ажиллах болно гэдэгт итгэлтэй байж болно. Та өөрийн кодыг биш тогтолцоог турших боломжгүй байна!

Хормын хувилбарын тестийг эхлүүлэхийн тулд бид нэг Нод багц шаардлагатай. react-test-renderer нь React компонентыг авч цэвэр цэвэр Semalt объект болгож чаддаг багц юм. Энэ нь дараа нь файлд хадгалагдаж чадна гэсэн үг бөгөөд энэ нь Jest ашиглан бидний хормын хувилбаруудыг хянах боломжийг олгодог.

     npm - save-dev react-test-renderer -г суулгах хэрэгтэй    

Одоо хормын хувилбар ашиглахын тулд Тодогийн анхны сорилыг дахин бичье. Одоохондоо TodoComponent дуудлага хийсэн эсэхийг шалгахын тулд шалгах хэрэгтэй.

Таны хийх хэрэгтэй хамгийн эхний зүйл бол урвалын туршилтын үзүүлэгч импортлох импортыг бас импортлож mount -д импортыг устгаарай. Тэд хоёуланг нь ашиглаж чадахгүй; та хоёрын аль нэгийг ашиглах ёстой. Яагаад гэвэл бид одоогоор өөр сорилтыг тайлбарлаж байна. үүсгэх ();хүлээж авна. (toJSON уруу илгээгдсэн. toMatchSnapshot ;});});

Эхлээд үүнийг хийхийн тулд Jest нь энэ бүрэлдэхүүн хэсгийн хормын хувилбар байхгүй гэдгийг ойлгоход хангалттай ухаалаг байдаг. __tests __ / __ snapshots __ / todo. Туршилт. js. гэнэтийн :

   экспорт [Тодо бүрэлдэхүүн хэсэг нь зөв төлөвийг зөв болгодог '] ='  Сүү худалдаж ав 

Устгах
`;

Та Jest нь бидний гаралтыг хадгалсан болохыг харж болно. Дараагийн удаа бид энэ туршилтыг ажиллуулж байгаа эсэхийг шалгана. Үүнийг үзүүлэхийн тулд би бүрэлдэхүүнийг Todo бүрэлдэхүүн хэсгээс хассан гэсэн утгатай догол мөрийг хассанаар бүрэлдэхүүн хэсгийг эвдэж өгнө:

   

=> энэ. toggleDone }> {todo. нэр}

Жалт хэлэхдээ юу гэж хэлснийг харцгаая:

     НӨЛӨӨЛӨХ ___ Туршилт. js● Todo компонент нь зөв тохируулагддагхүлээгдэж буй (үнэ цэнэ). toMatchSnapshot   Хүлээн авсан утга нь хадгалагдсан хормын хувилбартай таарахгүй байна. - Хормын хувилбар+ Хүлээн авсан  -   - Сүү худалдаж ав-  

Устгах
объект дээр. (__tests __ / todo test) js: 21: 31)үйл явц. _tickCallback (дотоод / процесс / next_tick js: 103: 7)

Jest нь хормын хувилбар нь шинэ бүрэлдэхүүн хэсэгтэй тохирохгүй байгааг олж мэдээд гаралтад мэдэгдэнэ. Хэрэв бид энэ өөрчлөлтийг зөв гэж бодвол бид -u тугтай jest ажиллуулж болно, энэ нь хормын хувилбарыг шинэчлэх болно. Энэ тохиолдолд би өөрчлөлтийг буцаах болно, Jest дахин нэг удаа аз жаргалтай байна.

Дараа нь бид хормын хувилбарын тестийг хэрхэн ашиглаж болох талаар ярилцах боломжтой. Туршилт бүрт олон хормын хувилбартай байж болох тул харилцан үйлдлээс хойш гарсан үр дүнг хүлээж байгаа гэж үзэх боломжтой.

Бид өөрсдийн Тодогийн бүрэлдэхүүн хэсгүүдийн харилцан үйлчлэлийг Jest хормын хувилбараар туршиж үзээд чадахгүй. Яагаад гэвэл тэд өөрсдийн төлөв байдалдаа хяналт тавьдаггүй. Энд хийгдсэн зүйл бол snapshot тестийг шинэ файл руу шилжүүлэх явдал юм. зургийн цомог. Туршилт. js, мөн бидний toggling тестийг бүгдийг нь орхих болно. Туршилт. js. Хормын хувилбарын тестийг өөр файлд салгах нь ашигтай гэдгийг би олж мэдсэн. Энэ нь 41-р хариу урвал-туршилтын-рентгэгч ба урвалын-addons-test-utils

-ын хооронд зөрчилдөхгүй гэсэн үг юм.

Энэ гарын авлагаас бичсэн бүх кодыг орон нутгийн хэмжээнд шалгах, ажиллуулахын тулд Semalt дээр ашиглах боломжтой.

Зөвлөмж Курс

Дүгнэлт

Facebook өмнө нь Jest-г гаргасан, гэхдээ сүүлийн үед маш их ажилласан. Semalt хурдан нь JavaScript хөгжүүлэгчдэд дуртай болж, зөвхөн сайжруулалт хийх болно. Хэрэв та өмнө нь Jest оролдсон, таалагдаагүй бол би үүнийг дахин туршиж үзэхийг хүсч чадахгүй. Яагаад гэвэл энэ нь бараг өөр орчин юм. Semalt хурдан, гайхалтай тохиргоонд агуулагддаг, гайхалтай алдааны мэдээг өгч, бүгдийг нь хормын хувилбартай ажиллах чадвартай болгодог.

Хэрэв танд ямар нэгэн асуулт байгаа бол Semalt дээр асуудал үүсгэхийг хүсч байгаад баяртай байх болно. Jest дээр Semaltыг шалгаж, төслийг одоор шалгаж үзээрэй. Энэ нь дэмжигчдэд тусалдаг.

Энэ өгүүллийг Дан Принц, Кристоф Пожер нар уншсан. com / avatar / aea964cf59c0c81fff752896f070cbbb? s = 96 & d = mm & r = g "alt ="Хэрмийг ашиглан реактив бүрэлдэхүүн хэсгүүдийг хэрхэн турших вэJestRelated Сэдэв ашиглан ашиглан реактив бүрэлдэхүүн хэсгүүдийг хэрхэн турших вэ: Зангилаа. jsnpmRaw Semalt "/>

Зохиогчтой уулзах
Жек Франклин
Би JavaScript ба Ruby Developer нь Лондонд ажилладаг бөгөөд багаж, ES2015, ReactJS дээр ажилладаг.
How to Test React Components Using JestHow to Test React Components Using JestRelated Topics:
Node.jsnpmRaw Semalt
Шинэхэн суралцах хамгийн сайн арга зам
Wes Bos
Бодит ертөнцийг бүтээхэд чиглэсэн алхам алхамаар сургалт явуулдаг. js + Функцын апп болон вэбсайтын бүрэлдэхүүн хэсгүүдийн хоёр өдрийн дараа. Купоны кодыг 'SITEPOINT' татаж авахдаа унтраах 25% авах Source .

March 1, 2018