Probabil acest lucru nu este primul tutorial pe care l-ați văzut vreodată. Dar probabil că ați avut îndoieli cu privire la teste și nu ați avut niciodată timp să le citiți. La urma urmei, poate părea o muncă suplimentară fără niciun motiv.
Acest tutorial intenționează să vă schimbe opiniile. Vom începe de la bun început: ce este testarea și de ce ar trebui să o faceți? Apoi, vom vorbi pe scurt despre scrierea codului testabil, înainte de a ști, de fapt, să faceți niște teste! Hai să ajungem la asta!
Foarte simplu, testarea este ideea de a avea un set de cerințe pe care o anumită bucată de cod trebuie să treacă pentru a fi suficient de robust pentru a fi utilizat în lumea reală. Adesea, vom scrie ceva JavaScript și apoi îl vom deschide în browser și vom face un click în jur pentru a ne asigura că totul funcționează așa cum ne-am fi așteptat. Deși acest lucru este uneori necesar, nu este tipul de testare despre care vorbim aici. De fapt, sper că acest tutorial vă va convinge că auto-testarea rapidă și murdară ar trebui să completeze o procedură de testare mai rigidă: auto-testare este bine, dar o listă amănunțită de cerințe este paramount.
Așa cum ați putea ghici, problema cu testarea javascript-ului de refresh-and-click este dublă:
În scris teste care verifică tot ce trebuie să facă codul dvs., puteți verifica dacă codul dvs. este în cea mai bună formă înainte de a-l utiliza efectiv pe un site web. Până când ceva se execută într-un browser, probabil există mai multe puncte de eșec. Testele de scriere vă permit să vă concentrați pe fiecare parte testabilă individual; dacă fiecare piesă își face dreptul de lucru, lucrurile ar trebui să funcționeze împreună fără probleme (testarea pieselor individuale, cum ar fi acest lucru se numește testare unitate).
Dacă sunteți un poliglot de programare), este posibil să fi făcut teste în alte limbi. Dar am găsit testarea în JavaScript a unei ființe diferite pentru a ucide. La urma urmei, nu construiți prea multe interfețe de utilizator în, de exemplu, PHP sau Ruby. De multe ori, facem munca DOM în JavaScript și cum anume încercați acest lucru?
Ei bine, munca DOM nu este ceea ce vrei să scrii teste; este logica. Evident, cheia aici este să vă separați logica și codul dvs. UI. Aceasta nu este întotdeauna ușurință; Mi-am scris partea mea echitabilă din interfața cu jQuery și poate deveni destul de dezordonată destul de repede. Nu numai că acest lucru face dificilă testarea, dar și logica interconectată și codul UI pot fi greu de modificat atunci când se schimbă comportamentul dorit. Am gasit folosind metodologii cum ar fi template-uri (de asemenea, template-uri) si pub / sub (de asemenea, pub / sub).
Încă un lucru, înainte să începem să codificăm: cum scriem testele noastre? Există numeroase biblioteci de testare pe care le puteți folosi (și multe tutoriale bune pentru a vă învăța să le folosiți, vedeți linkurile ca sfârșit). Cu toate acestea, vom construi o mică bibliotecă de testare de la zero. Nu va fi la fel de fantezie ca unele biblioteci, dar veți vedea exact ce se întâmplă.
Având în vedere acest lucru, să mergem la treabă!
Vom construi o galerie de micro-fotografii: o listă simplă de miniaturi, cu o singură imagine aflată deasupra lor. Dar mai întâi, să construim funcția de testare.
Pe măsură ce aflați mai multe despre testarea și testarea bibliotecilor, veți găsi numeroase metode de testare pentru a testa tot felul de specificuri. Cu toate acestea, totul se poate reduce la faptul dacă două lucruri sunt egale sau nu: de exemplu,
Deci, iată metoda noastră de a testa pentru egalitate:
var TEST = areEqual: funcție (a, b, msg) var rezultat = (a === b); console.log ((rezultat? "PASS:": "FAIL:") + msg); rezultatul retur; ;
Este destul de simplu: metoda are trei parametri. Primele două sunt comparate, iar dacă sunt egale, testele trec. Al treilea parametru este un mesaj care descrie testul. În această bibliotecă simplă de testare, suntem doar de ieșire testele noastre la consola, dar puteți crea ieșire HTML cu styling CSS corespunzătoare, dacă doriți.
Iată-l areNotEqual
(în același TEST
obiect):
areNotEqual: funcția (a, b, msg) var rezultat = (a! == b); console.log ((rezultat? "PASS:": "FAIL:") + msg); rezultatul retur;
Veți observa ultimele două linii sunt egale
și areNotEqual
la fel. Deci, le putem trage astfel:
var TEST = areEqual: funcția (a, b, msg) returnează acest._output (a === b, msg), areNotEqual: funcția (a, b, msg) return this._output b, msg); , _output: funcție (rezultat, msg) console [rezultat? "jurnal": "avertizați"] ((rezultat "PASS:": "FAIL:") + msg); rezultatul retur; ;
Grozav! Un lucru minunat este că putem adăuga alte metode de "zahăr" folosind metodele pe care le-am scris deja:
TEST.isTypeOf = funcția (obj, type, msg) returnați acest.Equal (typeof obj, type, msg); ; TEST.isAnInstanceOf = funcția (obj, type, msg) returnează acest._output (exemplu de tip, msg); TEST.isGreaterThan = funcția (val, min, msg) returnează acest._output (val> min, msg);
Puteți experimenta acest lucru pe cont propriu; după ce ați trecut prin acest tutorial, veți avea o idee bună despre cum să îl utilizați.
Deci, să creăm o galerie foto super-simplă, folosind mini-ul nostru TEST
cadru pentru a crea câteva teste. Voi menționa aici că, în timp ce dezvoltarea bazată pe teste este o practică excelentă, nu o vom folosi în acest tutorial, în primul rând pentru că nu este ceva ce puteți învăța într-un singur tutorial; este nevoie de o mulțime de practică pentru a într-adevăr GROK. Când începeți, este mai ușor să scrieți un pic de cod și apoi să îl testați.
Asadar, hai sa incepem. Desigur, vom avea nevoie de HTML pentru galeria noastră. Vom păstra acest lucru destul de simplu:
Testarea în JavaScript
Există două lucruri principale care merită remarcate aici: în primul rând, avem un a care deține marcajul foarte simplu pentru galeria noastră de imagini. Nu, probabil că nu este foarte robust, dar ne dă ceva de lucru. Apoi, observați că suntem trei
>