Back to Question Center
0

Unit Test Ձեր JavaScript օգտագործելով Mocha եւ Chai            Unit Test Ձեր JavaScript օգտագործման Mocha եւ ChaiRelated թեմաները: AngularJSES6Raw Semalt

1 answers:
Unit Test Ձեր JavaScript օգտագործելով Mocha եւ Chai

Այս հոդվածը համարվում էր Peer review- ի կողմից Panayiotis «pvgr» Velisarakos, Mark Brown եւ Tom Greco: Շնորհիվ Semalt- ի բոլոր վերանայողների, Semalt- ի պարունակությունը լավագույնը դարձնելու համար դա կարող է լինել:

10) Երբեւէ որոշ փոփոխություններ արել եք ձեր օրենսգրքի մեջ, եւ հետագայում հայտնաբերել է, որ ինչ-որ այլ բան է առաջանում:

Սեմալտը համոզված է մեզանից շատերին: Սա գրեթե անխուսափելի է, հատկապես, երբ դուք ունեք ավելի մեծ քանակությամբ կոդը: Մի բան կախված է մյուսից, եւ այն փոխելով, արդյունքում ինչ-որ բան խախտում է:

10) Իսկ եթե դա տեղի չունեցավ: Ինչ, եթե դուք ունեցել եք իմանալով, երբ ինչ - որ բան փոխվում է ինչ-որ փոփոխության արդյունքում: Դա լավ կլինի: Դուք կարող եք փոփոխել ձեր կոդը, առանց անհանգստանալու ոչինչ խախտելու մասին, դուք ավելի քիչ սխալներ կցանկանաք, եւ ավելի քիչ ժամանակ եք ծախսում:

Այնտեղ, որտեղ միավորի թեստերը փայլում են: Նրանք ավտոմատ կերպով հայտնաբերել են որեւէ խնդիր կոդում ձեզ համար: Փոփոխություն կատարեք, վարեք ձեր թեստերը եւ եթե ինչ-որ բան խախտվի, անմիջապես կճանաչեք այն, ինչ տեղի է ունեցել, որտեղ խնդիրն է եւ ճիշտ վարքագիծը: Սա լիովին վերացնում է ցանկացած կանխատեսում:

Այս հոդվածում ես ձեզ ցույց կտամ, թե ինչպես պետք է սկսել միավորի փորձարկումը ձեր JavaScript կոդը: Այս հոդվածում ներկայացված օրինակներ եւ մեթոդները կարող են կիրառվել ինչպես բրաուզերի վրա հիմնված կոդը, այնպես էլ Semalt կոդը:

Այս ձեռնարկի կոդն առկա է մեր Semalt repo- ից:

Որն է միավորի փորձարկումը

Երբ փորձարկում եք ձեր codebase- ը, դուք վերցնում եք մի կոդ, սովորաբար, գործառույթ եւ ստուգեք այն ճիշտ իրավիճակում որոշակի իրավիճակում: Միավորի փորձարկումը դա կատարելու համակարգված եւ ավտոմատացված եղանակ է: Որպես արդյունք, ավելի շատ փորձարկումներ եք գրում, այնքան մեծ է ձեր օգուտը: Դուք նաեւ կունենաք ավելի մեծ վստահություն ձեր codebase- ում, երբ շարունակեք այն զարգացնել:

միավորի փորձարկումների հիմնական գաղափարը `գործառույթի վարքագիծը փորձարկելիս, երբ այն տալիս է որոշակի հավաքածուներ: Դուք կոչում եք ֆունկցիա որոշակի պարամետրերով, եւ ստուգեք, ստացել եք ճիշտ արդյունք:

     // 1-ը եւ 10-ը որպես միջոցներ: . Արդյունք = Մաթեմատիկա: max (1, 10);// մենք 10-ը պետք է ստանանք արտադրանքիեթե (արդյունքը. == 10) {նետել նոր սխալ ('Failed');}    
10) Գործնականում թեստերը երբեմն կարող են ավելի բարդ լինել: Օրինակ, եթե ձեր գործառույթը դարձնում է Ajax- ի խնդրանքը, ապա փորձարկումները պետք է որոշակիորեն կարգավորվեն, բայց նույն սկզբունքն է, որը «որոշակի միջոցների տրամադրված է, ակնկալում ենք կոնկրետ արդյունք»:

Գործիքների տեղադրում

10) Այս հոդվածի համար մենք կօգտագործենք Mocha- ն: Դա հեշտ է սկսել, կարող է օգտագործվել ինչպես բրաուզերի վրա հիմնված փորձարկման, այնպես էլ Semalt թեստավորման համար, եւ դա լավ է խաղում այլ փորձարկման գործիքների հետ:

Mocha- ի տեղադրման ամենադյուրին ճանապարհը npm- ի միջոցով (որի համար մենք նաեւ պետք է տեղադրել հանգույցը: js): Եթե ​​դուք չեք համոզված, թե ինչպես տեղադրել nppm կամ հանգույց ձեր համակարգում, խորհրդակցեք մեր ձեռնարկը: A Beginner's Guide to npm- ի հանգույց Փաթեթի մենեջեր

Տեղակայված հանգույցով, բացեք տերմինալի կամ հրամանի տող ձեր նախագծի գրացուցակում:

  • Եթե ցանկանում եք ստուգել կոդը բրաուզերում, գործարկել npm install mocha chai-save-dev
  • Եթե ցանկանում եք ստուգել հանգույցը: js կոդ, բացի վերեւից, վարում npm install -g mocha

Սա տեղադրում է փաթեթները mocha եւ chai : Mocha- ն գրադարան է, որը թույլ է տալիս մեզ փորձարկել, իսկ Chai- ն պարունակում է որոշ օգտակար գործառույթներ, որոնք մենք կօգտագործենք ստուգելու մեր փորձարկման արդյունքները:

Փորձարկման հանգույցի վրա: js vs թեստավորում է բրաուզերում

10) Հետեւյալ օրինակներ, որոնք նախատեսված են աշխատելու, եթե թեստերը վարեք զննարկիչում: Եթե ​​ցանկանում եք բաժանորդագրվել ձեր Սեմալտի դիմումը, հետեւեք այս քայլերին:

  • Node- ի համար դուք պետք չէ թեստային վազող ֆայլի մասին.
  • Սկսեք թեստերը, օգտագործելով mocha հրամանը, զննարկիչի բացման փոխարեն:

Կառուցապատման կառուցվածքը

Դուք պետք է տեղադրել ձեր թեստերը առանձին տեղեկատուում ձեր հիմնական կոդի ֆայլերից: Սա հեշտացնում է նրանց կառուցումը, օրինակ, եթե ուզում եք ապագայում այլ տեսակի թեստեր ավելացնել (օրինակ, ինտեգրացիոն փորձարկումներ կամ ֆունկցիոնալ թեստեր):

JavaScript- ի կոդով ամենատարածված պրակտիկան այն է, որ ձեր նախագծի արմատային գրացուցակում փորձարկում / գրացուցակ կա: Այնուհետեւ, յուրաքանչյուր փորձարկման ֆայլը տեղադրվում է փորձարկման / someModuleTest- ի ներքո: js : Հնարավոր է, դուք նաեւ կարող եք օգտագործել դիրեկտորիաների ներսում փորձարկում / , բայց խորհուրդ եմ տալիս բաները պարզ պահել, եթե անհրաժեշտության դեպքում այն ​​միշտ կարող եք փոխել:

Test Runner- ի ստեղծում

Որպեսզի փորձարկենք մեր թեստերը դիտարկիչում, մենք պետք է պարզ HTML էջ ստեղծենք `մեր փորձարկման վազքատու էջ: Էջը բեռնում է Մոկա, թեստավորման գրադարանները եւ մեր փաստացի փորձարկման ֆայլերը: Թեստեր վարելու համար, մենք պարզապես բացելու ենք վազողը բրաուզերում:

Եթե Դուք օգտագործում եք հանգույցը: js, կարող եք բաց թողնել այս քայլը: Հանգույց: js միավորի թեստերը կարող են օգտագործվել հրամանով mocha , ենթադրելով, որ դուք հետեւել եք առաջարկվող գրացուցակների կառուցվածքին:

Ստորեւ բերված է այն կոդը, որը մենք կօգտագործենք փորձարկման վարպետի համար: Ես այս ֆայլը կփրկեմ որպես testrunner: html :

   <ղեկավար> Mocha թեստեր </ title><հղումը rel = "stylesheet" href = "node_modules / mocha / mocha. css"></ head><body><div id = "mocha">  </div> <script src = "node_modules / mocha / mocha - <a href="https://www.otto-weitzmann.com/otto-weitzmann,8,1,1,670,0,Damen,18842.html">groe armbanduhren damen</a>. js"> </ script><script src = "node_modules / chai / chai. js"> </ script><script> mocha: setup ('bdd') </ script><! - բեռի կոդը, որը ցանկանում եք ստուգել այստեղ `><! - բեռնել ձեր փորձարկման ֆայլերը այստեղ -><script>mocha. run  <span class="f-c-white l-mr3"> ;</ script></ body></ html> </code>   </pre>  <p>  Փորձարկման վազքի մեջ կարեւոր բիթերն են ` </p>  <ul>  <li>  Մենք բեռնում ենք Մոճայի CSS- ի ոճերը `փորձարկման արդյունքների լավ ձեւաչափով տալ:  </li>  <li>  Մենք ստեղծում ենք ID հետ ID  <code>  mocha  </code> : Սա այն տեղն է, որտեղ տեղադրվում են փորձարկման արդյունքները:  </li>  <li>  Մենք բխում ենք Մոճա եւ Չայ: Նրանք գտնվում են  <code>  node_modules  </code>  թղթապանակի ենթապայծառներում, քանի որ դրանք տեղադրեցին npm- ի միջոցով:  </li>  <li>  զանգահարելով  <code>  mocha: setup  </code> , մենք Mocha- ի թեստավորման օգնականներին մատչելի ենք դարձնում:  </li>  <li>  Այնուհետեւ մենք բեռնաթափում ենք այն կոդը, որը մենք ուզում ենք փորձարկել եւ փորձարկման ֆայլերը: Այստեղ դեռեւս ոչինչ չունենք:  </li>  <li>  Վերջապես, մենք զանգահարում ենք  <code>  mocha: վազում  </code>  թեստեր վարելու համար: Համոզվեք, որ զանգահարեք այս  <em>   </em>  աղբյուրից եւ փորձարկման ֆայլերից հետո:  </li> </ul><h2 id="the-basic-test-building-blocks"> Հիմնական տեստի կառուցվածքային բլոկներ  </h2>  <p>  Այժմ, երբ մենք կարող ենք փորձարկել, եկեք սկսենք գրել:  </p>  <p>  Մենք սկսում ենք նոր ֆայլ ստեղծել  <code>  test / arrayTest: js  </code> : Անհատական ​​փորձարկման ֆայլ, որը այսպիսին է, հայտնի է որպես  <em>  փորձարկման դեպք  </em> : Ես այն կոչում եմ  <code>  arrayTest. js  </code> , քանի որ այս օրինակի համար մենք փորձարկելու ենք որոշ հիմնական զանգվածի ֆունկցիոնալությունը:  </p>  <p>  Յուրաքանչյուր փորձարկման գործի ֆայլը նույն հիմնական օրինակին է հետեւում: Նախ, դուք ունեք  <code>  նկարագրեք  </code>  բլոկը,  </p>  <pre>   <code>  նկարագրեք ('Array', function  <span class="f-c-white l-mr3">  {{// Թեստերի լրացուցիչ կոդը այստեղ է}); </code>   </pre>  <p>   <code>  նկարագրում  </code>  օգտագործվում է անհատական ​​փորձարկումների համար: Առաջին պարամետրը պետք է ցույց տա, թե ինչ ենք փորձարկում, այս դեպքում, քանի որ մենք պատրաստվում ենք ստուգել զանգվածի գործառույթները, անցել եմ տողում  <code>  'Array'  </code> :  </p>  <p>  Երկրորդ, ներսում  <code>  նկարագրում է  </code> , մենք կունենանք  <code>  այն  </code>  բլոկներ,  </p>  <pre>   <code>  նկարագրեք ('Array', function  <span class="f-c-white l-mr3">  {{այն ('պետք է սկսել դատարկ', function  <span class="f-c-white l-mr3">  {// Թեստի կիրառումը այստեղ է});// Կարող ենք ավելի շատ լինել այստեղ}); </code>   </pre>  <p>   <code>  այն  </code>  օգտագործվում է իրական թեստերի ստեղծման համար: Առաջին պարամետրը  <code>  այն  </code>  պետք է ապահովի թեստի մարդկային կարդալու նկարագրություն: Օրինակ, մենք կարող ենք կարդալ վերը նշվածը, «այն պետք է սկսել դատարկ», ինչը լավ բնութագիր է, թե ինչպես պետք է վարվել զանգվածները.  </p>  <p>  Բոլոր Սեմալտ թեստերը կառուցված են նույն շենքային բլոկներից, եւ նրանք հետեւում են նույն հիմնական օրինակին:  </p>  <ul>  <li>  Նախ, մենք օգտագործում ենք  <code>  նկարագրելու  </code> , թե ինչ ենք փորձարկում, օրինակ, «նկարագրեք, թե ինչպես է զանգվածը պետք է աշխատի»:  </li>  <li>  Այնուհետեւ, մենք օգտագործում ենք մի շարք  <code>  այն  </code>  գործառույթները `անհատական ​​թեստեր ստեղծելու համար, որոնցից յուրաքանչյուրը  <code>  այն պետք է բացատրի մի յուրահատուկ վարքագիծ, ինչպիսին է« այն պետք է դատարկ լինի »մեր զանգվածի դեպքում վերեւում:  </li> </ul><h2 id="writing-the-test-code"> Թեստային օրենսգրքի գրելը  </h2>  <p>  Այժմ, երբ մենք գիտենք, թե ինչպես պետք է կառուցել թեստի գործը, եկեք անցնենք զվարճալի մաս `փորձարկումը իրականացնելիս:  </p>  <p>  Semalt մենք փորձարկում ենք, որ զանգվածը պետք է դատարկ լինի, մենք պետք է ստեղծել զանգված, ապա այն ապահովի դատարկ: Այս քննության իրականացման համար բավականին պարզ է.  </p>  <pre>   <code>  var assert = chai. հաստատել;նկարագրել ('Array', function  <span class="f-c-white l-mr3">  {այն ('պետք է սկսել դատարկ', function  <span class="f-c-white l-mr3">  {var arr = [];հաստատել. հավասար (arr երկարություն, 0);});}); </code>   </pre>  <p>  Նշենք առաջին գծի վրա, մենք ստեղծեցինք  <code>  հավաստի  </code>  փոփոխական: Այսպիսով, մենք չպետք է տատանենք  <code>  chai- ն: պնդում են  </code>  ամենուր:  </p>  <p>  Այն  <code>  այն գործում է  </code> , մենք ստեղծում ենք զանգված եւ ստուգում դրա երկարությունը: Թեեւ պարզ է, սա լավ օրինակ է, թե ինչպես են աշխատում թեստերը:  </p>  <p>  Նախ, դուք ունեք փորձարկվող մի բան, որը կոչվում է  <em>  System Testing Test  </em>  կամ  <em>  SUT  </em> : Այնուհետեւ, անհրաժեշտության դեպքում, SUT- ի հետ ինչ-որ բան եք անում: Այս փորձարկումներում մենք ոչինչ չենք անում, քանի որ մենք ստուգում ենք զանգվածը սկսում է դատարկ:  </p>  <p>  Փորձարկման մեջ վերջինը պետք է լինի վավերացում `11  </em>  հաստատում, որը ստուգում է արդյունքը: Այստեղ մենք օգտագործում ենք  <code> : հավասար  </code> : Հավաստիության գործառույթների մեծամասնությունը նույն կարգով պարամետրեր է վերցնում. Նախ `« փաստացի »արժեքը, ապա« սպասված »արժեքը:  </p>  <ul>  <li>  11  <em>  փաստացի  </em>  արժեքը ձեր փորձարկման կոդի արդյունքն է, ուստի այս դեպքում  <code>  arr. երկարությունը  </code>  </li>  <li>  11  <em>  ակնկալվող  </em>  արժեքն է, որ արդյունքը  <em>  պետք է լինի  </em> : Քանի որ զանգվածը պետք է դատարկ լինի, այս թեստի սպասվող արժեքը  <code>  0  </code>  </li> </ul> <p>  Chai- ն առաջարկում է նաեւ երկու տարբեր ձեւակերպումներ գրել, բայց մենք օգտագործում ենք պնդել, որ բաները պարզ պահեն: Երբ դուք դառնում եք ավելի փորձառու գրավոր թեստեր, դուք կարող եք օգտագործել այն ակնկալվող պնդումները, քանի որ դրանք ավելի շատ ճկունություն են ապահովում:  </p> <h2 id="running-the-test"> Թեստի վարում  </h2>  <p>  Այս թեստը գործելու համար մենք պետք է ավելացնենք այն, որ ավելի վաղ մենք ստեղծեցինք թեստային վազող ֆայլ:  </p>  <p>  Եթե Դուք օգտագործում եք հանգույցը: js, կարող եք բաց թողնել այս քայլը եւ օգտագործել փորձը  <code>  mocha  </code> : Դուք կտեսնեք թեստի արդյունքները տերմինալում:  </p>  <p>  Semalt, այս թեստը ավելացնել վազորդին, պարզապես ավելացրեք ` </p>  <pre>   <code>  <script src = "test / arrayTest. Js"> </ script> </code>   </pre>  <p>  Ստորեւ ` </p>  <pre>   <code>  <! - բեռնել ձեր փորձարկման ֆայլերը այստեղ -> </code>   </pre>  <p>  Սցենարն ավելացրածից հետո կարող եք բեռնել փորձարկման վազորդի էջը ձեր դիտարկիչում:  </p>  <h2 id="the-test-results">  Փորձարկման արդյունքները  </h2>  <p>  Երբ եք վարում ձեր թեստերը, փորձարկման արդյունքները նման են նման բանին.  </p>  <p>   <img src="/img/d4088f278b6ea3753bead38d065707700.jpg" alt="Unit Test Your JavaScript Using Mocha and ChaiUnit Test Your JavaScript Using Mocha and ChaiRelated Topics:
AngularJSES6Raw Semalt
"/>  <p>  Նշենք, որ այն, ինչ մենք մուտքագրեցինք  <code>  նկարագրեցինք  </code>  եւ  <code>  այն  </code>  ֆունկցիաները հայտնվում են արտադրության մեջ, թեստերը խմբավորված են նկարագրությամբ: Նշենք, որ հնարավոր է նաեւ բջիջները  <code>  նկարագրել  </code>  բլոկների հետագա ենթաբաժինների ստեղծման համար:  </p>  <p>  Սեմալտը նայում է այն բանի, թե ինչ տապալում է թեստը:  </p>  <p>  Թեստի գծում, որը ասում է.  </p>  <pre>   <code>  պնդում. հավասար (arr երկարություն, 0); </code>   </pre>  <p>  Փոխարինեք  <code>  0  </code>  թիվը  <code>  1  </code> : Դա թույլ է տալիս ստուգումը, քանի որ զանգի երկարությունը այլեւս չի համապատասխանում ակնկալվող արժեքին:  </p>  <p>  Եթե կրկին թեստեր եք անցնում, կտեսնեք, որ սխալ փորձը կարմիր է, ինչի մասին սխալ է նկարագրված. Թեեւ մենք կարող ենք դա շտկել:  </p>  <p>  Հավաստիացման գործառույթների մեծ մասը կարող է նաեւ վերցնել ընտրովի  <code>  հաղորդագրություն  </code>  պարամետր: Սա այն ուղերձն է, որը ցույց է տալիս, երբ հաստատումը չի հաջողվում: Դա լավ գաղափար է, օգտագործելու այս պարամետրը `սխալի մասին ավելի հեշտ հասկանալու համար:  </p>  <p>  Մենք կարող ենք ուղերձ հղել մեր պնդմանը հետեւյալ կերպ.  </p>  <pre>   <code>  պնդում. հավասար (arr երկարություն, 1, 'զանգվածի երկարությունը չի 0'); </code>   </pre>  <p>  Եթե կրկին փորձարկեք թեստերը, կանխադրվածի փոխարեն կհայտնվի պատվերային հաղորդագրություն:  </p>  <p>  Եկեք միացրեք պնդումը այն ձեւով, փոխարինեք  <code>  1  </code>  եւ  <code>  0  </code> , եւ փորձեք նորից ստուգել դրանք անցնելու համար:  </p> <h2 id="putting-it-together"> Միասին դնելով  </h2> 10) Մինչեւ մենք բավականին պարզ օրինակներ ենք նայում: Սեմալտը դնում ենք այն, ինչ մենք սովորել ենք պրակտիկայում եւ տեսնում ենք, թե ինչպես ենք մենք փորձարկել ավելի իրատեսական կոդ:  </p>  <p>  Ահա մի գործառույթ, որը տարր է ավելացնում CSS դասը: Սա պետք է գնա նոր ֆայլում  <code>  js / className: js  </code> :  </p>  <pre>   <code>  function addClass (el, newClass) {եթե (էլ. className. indexOf (newClass) === -1) {էլ. className + = newClass;}} </code>   </pre>  <p>  Այն մի փոքր ավելի հետաքրքիր դարձնելու համար, ես այն ավելացրեցի նոր դաս, միայն այն դեպքում, երբ այդ դասը գոյություն չունի տարրական  <code>  className  </code>  հատկությամբ, ով ուզում է տեսնել  <code>  <div class = " Բարեւ hello hello hello ">  </code>  Ի վերջո,  </p>  <p>  Լավագույն դեպքում, մենք այս ֆունկցիայի համար թեստեր ենք գրելու  <em> , նախքան  </em>  գրելու կոդը: Սակայն թեստային զարգացումը բարդ թեման է, եւ մենք պարզապես ցանկանում ենք կենտրոնանալ գրելու թեստերի վրա:  </p>  <p>  Սկսենք, եկեք հիշենք միավորի թեստերի հիմնական գաղափարը. Մենք գործառույթին տալիս ենք որոշակի միջոցներ, ապա ստուգենք ֆունկցիան, ինչպես սպասվում է: Այսպիսով, ինչ գործոններ են այդ գործառույթի ներդրումները:  </p>  <p>  Semalt տարրը եւ դասի անունը.  </p>  <ul>  <li>  եթե տարրը  <code>  className  </code>  գույքը չի պարունակում դասի անունը, այն պետք է ավելացվի:  </li>  <li> , եթե տարրը  <code>  className  </code>  գույքը պարունակում է դասի անունը, այն չպետք է ավելացվի:  </li> </ul>10) Այս գործերը թարգմանենք երկու փորձարկում:  <code>  թեստի  </code>  ցուցակում, ստեղծեք նոր ֆայլ  <code>  classNameTest: js  </code>  եւ ավելացնել հետեւյալը.  </p>  <pre>   <code>  նկարագրել ('addClass', function  <span class="f-c-white l-mr3">  {այն ('պետք է ավելացնել դասը տարրին');այն («չպետք է ավելացնել դաս, որն արդեն գոյություն ունի»);}); </code>   </pre> 10) Մենք մի փոքր փոխեցինք թեստերը օգտագործված «այն պետք է անել X» ձեւը: Սա նշանակում է, որ այն մի քիչ ավելի լավ է կարդում, բայց, ըստ էության, դեռեւս նույն մարդկային ընթերցանության ձեւը, որ մենք վերը նշված ենք: Սեմալտը սովորաբար ոչ ավելի դժվար է, քան գաղափարից փորձարկվելը:  </p>  <p>  Բայց սպասեք, որտեղ են փորձարկման գործառույթները: Դե, երբ մենք չենք բաց թողնում երկրորդ պարամետրը  <code>  այն  </code> , Mocha- ն այս թեստերը նշում է որպես  <em>  մինչեւ սպասարկման  </em>  արդյունքները: Սա հարմար տարբերակ է մի շարք թեստերի ստեղծման համար, ինչպիսին է դուք գրելու մտադրություն ունեցող նմանօրինակ ցուցակ:  </p>  <p>  Սեմալտը շարունակում է իրականացնել առաջին փորձությունը:  </p>  <pre>   <code>  նկարագրել ('addClass', function  <span class="f-c-white l-mr3">  {այն ('պետք է ավելացնել դասի տարրը', function  <span class="f-c-white l-mr3">  {var element = {className: ''};addClass (տարր, 'test-class');հաստատել. հավասար (element. className, 'test-class');});այն («չպետք է ավելացնել դաս, որն արդեն գոյություն ունի»);}); </code>   </pre>  <p>  Այս փորձարկումում մենք ստեղծում ենք 39  <code>  տարր  </code>  փոփոխություն եւ այն փոխանցում ենք որպես 39  <code>  addClass  </code>  ֆունկցիայի պարամետր, ինչպես նաեւ տող  <code>  փորձարկման դասի հետ  </code>  ավելացնել նոր դաս): Այնուհետեւ մենք ստուգում ենք դասը ընդգրկված արժեքի մեջ `օգտագործելով հաստատում:  </p>  <p>  Semalt, մենք գնացինք մեր նախնական գաղափարից, որը տրվեց տարր եւ դասի անուն, այն պետք է ավելացվեր դասակարգային ցուցակում եւ թարգմանեց այն բավականին պարզ կերպով:  </p>  <p>  Թեեւ այս գործառույթը նախատեսված է աշխատել DOM տարրերի հետ, մենք այստեղ օգտագործում ենք պարզ JS օբյեկտ: Երբեմն մենք կարող ենք օգտագործել այս եղանակով JavaScript- ի դինամիկ բնույթը `պարզեցնելով մեր թեստերը. Որպես լրացուցիչ նպաստ, քանի որ մենք չենք օգտագործում DOM- ը, մենք կարող ենք նաեւ փորձարկել այս քննությունը Semalt- ում, եթե մենք ցանկանում ենք:  </p> <h3 id="running-the-tests-in-the-browser"> Թեստեր վարելով բրաուզերում </h3> <p>  Թեստը դիտարկչում վարելու համար անհրաժեշտ է ավելացնել  <code>  className: js  </code>  եւ  <code>  classNameTest- ը: js  </code>  վազորդին.  </p>  <pre>  <code class="code-markup"> <! - բեռի կոդը, որը ցանկանում եք ստուգել այստեղ `><script src = "js / className. js"> </ script><! - բեռնել ձեր փորձարկման ֆայլերը այստեղ -><script src = "test / classNameTest. js"> </ script> </code>   </pre>  <p>  Այժմ դուք պետք է տեսնեք մեկ թեստային անցագիր, եւ եւս մեկ թեստը ցույց է տվել, ինչպես սպասվում է, ինչպես ցույց է տրվում հետեւյալ սեմինտը: Նշենք, որ օրենսգիրքը մի փոքր տարբերվում է օրինակից, որպեսզի կոդն աշխատի Semalt- ի միջավայրում:  </p>  <p data-height="300" data-theme-id="6441" data-slug-hash="XXzXLX" data-default-tab="result" data-user="SitePoint" class="codepen">  Տեսեք Pen Unit Test- ի հետ Mocha- ով  </span>  SitePoint- ի կողմից (@SitePoint) CodePen- ում:  </p>  <p>   </p>  <p>  Հաջորդը, եկեք կիրառենք երկրորդ փորձությունը . </p>  <pre>   <code>  այն ('չպետք է ավելացնել դաս, որն արդեն գոյություն ունի', function  <span class="f-c-white l-mr3">  {var element = {className: 'գոյություն ունի'};addClass (տարր, 'գոյություն ունի');var numClasses = տարր: className: պառակտումը (''): երկարություն;հաստատել. հավասար (numClasses, 1);}); </code>   </pre>  <p>  Սովորեք լավ սովորություն գործադրել ձեր թեստերի հաճախ, հետեւաբար ստուգենք, թե ինչ է տեղի ունենում, եթե մենք փորձարկում ենք: Ինչպես սպասվում էր, նրանք պետք է անցնեն:  </p>  <p>  Ահա մեկ այլ Semalt- ն, որն իրականացվում է երկրորդ փորձարկումով:  </p> <p data-height="300" data-theme-id="6441" data-slug-hash="pgdyzz" data-default-tab="result" data-user="SitePoint" class="codepen"> Տեսեք Pen Unit Test- ի հետ Mocha- ի  <div class="l-d-f l-jc-cen f-center l-mh-auto l-o-h l-mt3">  SitePoint- ի կողմից (@SitePoint) CodePen- ում:  </p>  <p>   </p>  <p>  Բայց կախեցեք: Ես իրականում խաբել եմ քեզ: Այս գործառույթի համար կա երրորդ պահվածքը, որը մենք չենք համարում: Ֆունկցիայի մեջ կա նաեւ սխալ `բավականին լուրջ: Semalt- ն ընդամենը երեք գծի գործառույթ է, բայց նկատել եք այն:  </p>  <p>  Semalt- ը գրում է եւս մեկ թեստ `երրորդ վարքի համար, որը բացահայտում է սխալը որպես բոնուս:  </p>  <pre>   <code>  այն ('պետք է ավելացնել նոր դաս `գոյություն ունեցողից հետո', function  <span class="f-c-white l-mr3">  {var element = {className: 'գոյություն ունի'};addClass (տարր, նոր դաս);var դասեր = տարր: className: պառակտում ('');հաստատել. հավասար (դասեր [1], նոր դաս):}); </code>   </pre>  <p>  Այս անգամ փորձարկումը ձախողվում է: Դուք կարող եք տեսնել այն, գործող օրենսգրքում: Խնդիրն այստեղ պարզ է. CSS դասի անվանումները տարրերով պետք է բաժանվեն մի տարածքով: Այնուամենայնիվ, մեր ընթացիկ ներդրումը  <code>  addClass  </code>  չի ավելացնում տարածք:  </p> <p data-height="600" data-theme-id="6441" data-slug-hash="oboxve" data-default-tab="result" data-user="SitePoint" class="codepen"> See PenPoint Test- ի հետ Mocha- ի միջոցով  <div class="widget maestro maestro-content-type-html hide-for-mobile-SP" id="maestro-659">  SitePoint- ի կողմից (@SitePoint) CodePen- ում:  </p>  <p>   </p>  <p>  Սեմալտը ամրագրել ֆունկցիան եւ փորձարկել անցումը:  </p>  <pre>   <code>  function addClass (el, newClass) {եթե (էլ. className. indexOf (newClass)! == -1) {վերադարձ}եթե (էլ. className! == '') {// հավաստիացնել, որ դասի անունները բաժանվում են տարածքովnewClass = '' + newClass;}էլ. className + = newClass;} </code>   </pre>  <p>  Ահա վերջնական Semalt- ը ֆիքսված ֆունկցիայի եւ անցնող թեստերի հետ:  </p> <p data-height="266" data-theme-id="6441" data-slug-hash="BjmKBG" data-default-tab="result" data-user="SitePoint" class="codepen"> Տեսեք Pen Unit Test- ի հետ Mocha- ի  <div id="bsa-zone_1509641776795-6_123456">  SitePoint- ի կողմից (@SitePoint) CodePen- ում:  </p>  <p>   </p> <h3 id="running-the-tests-on-node"> Թեստեր վարելու հանգույցում </h3> <p>  Node- ում բաները տեսանելի են միայն նույն ֆայլում: Ինչպես  <code>  className. js  </code>  եւ  <code>  classNameTest- ը: js  </code>  տարբեր ֆայլեր են, մենք պետք է գտնենք մեկին մյուսին բացահայտելու միջոց: Դրա կատարման ստանդարտ ձեւը 39  <code>  մոդուլի օգտագործման միջոցով է: արտահանումը  </code> : Եթե ​​Ձեզ անհրաժեշտ է վերապատրաստում, ապա կարող եք կարդալ այս ամենը այստեղ. արտահանումը եւ արտահանումը հանգույցում: js  </p> 10) Օրենսգրքը հիմնականում մնում է նույնը, բայց մի փոքր այլ կերպ կազմված է.  </p>  <pre>   <code>  // դասի անուն: jsմոդուլը: արտահանում = {addClass: գործառույթ (el, newClass) {եթե (էլ. className. indexOf (newClass)! == -1) {վերադարձ}եթե (էլ. className! == '') {// հավաստիացնել, որ դասի անունները բաժանվում են տարածքովnewClass = '' + newClass;}էլ. className + = newClass;}} </code>   </pre>  <pre>   <code> // classNameTest- ը: jsvar chai = պահանջել (chai);var assert = chai. հաստատել;var className = պահանջում ('/ js / className. js');var addClass = className }); </code>   </pre> 10) Ինչպես տեսնում եք, թեստերը անցնում են:  </p>  <p>  <img src="/img/69815a7ce3b0fa013fc322c4b3df3b0b2.png" alt="Unit Test Your JavaScript Using Mocha and ChaiUnit Test Your JavaScript Using Mocha and ChaiRelated Topics:
AngularJSES6Raw Semalt
"/><h2 id="whats-next"> Ինչ է հետագայում:  </h2>  <p>  Ինչպես տեսնում եք, փորձարկումները բարդ չեն կամ բարդ չեն: Ինչպես Semalt- ի հավելվածները գրելու այլ առումներով, դուք ունեք մի քանի հիմնական օրինակներ, որոնք կրկնում են: Նրանց հետ ծանոթանալուց հետո կարող եք կրկին ու կրկին օգտագործել դրանք:  </p>  <p>  Բայց սա պարզապես քերծում է մակերեւույթը: Սեմալտը շատ ավելին է `միավորի փորձարկման մասին:  </p>  <ul>  <li>  Ավելի բարդ համակարգերի փորձարկում  </li>  <li>  Ինչպես զբաղվել Այաքսի, տվյալների բազաների եւ այլ «արտաքին» բաների հետ:  </li>  <li>  Փորձարկված զարգացում  </li> </ul> <p>  Եթե ցանկանում եք շարունակել սովորել այս եւ ավելի, ես ստեղծել եմ անվճար Սեմալտ միավորի փորձարկումներ արագընթաց շարք: Եթե ​​գտեք այս հոդվածը օգտակար, դուք անպայման պետք է ստուգեք այստեղ:  </p>  <p>  Այլապես, եթե տեսանյութը ավելի շատ ձեր ոճն է, կարող եք հետաքրքրել SitePoint Premium- ի դասընթացը `Test-Driven Development in Node- ում: js.  </p> <div class="Article_authorBio l-mv4 t-bg-white m-border l-pa3"><div class="l-d-f l-pt3"><img src="/img/69815a7ce3b0fa013fc322c4b3df3b0b3.jpg" alt="Unit Test Your JavaScript Using Mocha and ChaiUnit Test Your JavaScript Using Mocha and ChaiRelated Topics:
AngularJSES6Raw Semalt
"/><div class="f-lh-title"><div class="f-c-grey-300"> Հանդիպեք հեղինակին  </div> <div class="f-large">Ջանի Հարտիկինեն<i class="fa fa-twitter"> </i> <i class="fa fa-google-plus"> </i>  </div>  </div>  </div> <div class="f-light f-lh-copy l-mt3"> Jani- ն ստեղծել է բոլոր տեսակի JS հավելվածները ավելի քան 15 տարի: Իր բլոգում նա օգնում է JavaScript- ի մշակողները սովորել կոտրել կոպիտ կոդերը, որպեսզի նրանք կարողանան կենտրոնանալ զարմանալի ծրագրեր գրելու վրա եւ լուծել իրական խնդիրներ:  </div>  </div>  </div>  </div>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </span>  </div>  </div>  </div>  </div>  </code>  </html>                                                   
March 1, 2018