Treci la conținutul principal

Două moduri de a eșua

Un test poate raporta o problemă în două moduri, iar diferența stă în ce se întâmplă după aceea:

Fiecare aserțiune din node:assert/strict aruncă o eroare atunci când eșuează. O eroare aruncată încheie testul în care se află, așa că verificările scrise după ea nu mai rulează niciodată. Acesta este comportamentul de eșec rapid și este cel pe care îl obții implicit.

Ca să raportezi o problemă și să continui verificările, pune fiecare verificare în propriul apel test(…). Testele sunt independente: un test care eșuează nu îl oprește pe următorul, așa că o singură rulare poate raporta mai multe probleme deodată.

Ambele forme acceptă un mesaj. assert.equal(got, want, "…") și assert.ok(value, "…") afișează textul tău în locul celui implicit.


Teste separate: raportează și continuă

Când vrei să verifici mai multe cazuri la rând, dă fiecărui caz propriul test. Un caz stricat este raportat, iar cazurile de după el sunt tot verificate.

Astfel, o singură rulare îți arată toată paguba — nu doar primul caz stricat.

Vezi toate cazurile stricate deodată

Această funcție add ignoră b, așa că toate cele trei verificări eșuează. Pentru că fiecare verificare este un test separat, toate cele trei linii ✖ apar într-o singură rulare, iar rezumatul spune fail 3. Scrise ca trei verificări într-un singur test, doar prima ar fi fost raportată.

Prompt
Scrie un fișier de test TypeScript în care add are o eroare (întoarce doar a, ignorând b) și trei verificări stau în trei teste separate, astfel încât fiecare caz stricat să fie raportat. Arată rezultatul real cu toate cele trei eșecuri într-o singură rulare.
Ieșire: program TypeScript și rezultatul capturat

O aserțiune eșuată oprește testul

Uneori, o verificare eșuată înseamnă că restul testului nu mai poate funcționa. Un caz tipic: testul pregătește mai întâi o valoare, apoi o inspectează. Dacă pregătirea a mers deja prost, inspectarea ar fi inutilă sau chiar ar duce la o eroare gravă.

Aici aserțiunea care aruncă o eroare este exact ce îți dorești. Ea încheie testul chiar în acel punct, iar verificările de sub ea nu mai rulează niciodată — și tocmai acesta este scopul.

Oprire înainte de verificările inutile

splitWords are o eroare (desparte după caracterul greșit), așa că se întoarce 1 parte în loc de 3. Verificarea lungimii eșuează și aruncă o eroare, așa că verificarea primei părți de mai jos nu este atinsă niciodată — raportul arată acel singur eșec și nimic altceva.

Prompt
Scrie un fișier de test TypeScript în care o funcție splitWords ar trebui să despartă un șir separat prin virgule, dar are o eroare (desparte după caracterul greșit). Testul verifică mai întâi numărul de părți și abia apoi prima parte. Arată rezultatul în care aserțiunea eșuată oprește testul înainte de a doua verificare.
Ieșire: program TypeScript și rezultatul capturat
Stop before the useless checks

Mesaje la verificările booleene

assert.ok(value, message) este verificarea pentru o valoare booleană simplă: eșuează atunci când valoarea este falsă. Folosește-o acolo unde nu există o pereche obținut și așteptat de comparat, ci doar un răspuns de tip da sau nu.

Mesajul este al doilea argument și este opțional. Fără el, executorul de teste tot afișează textul său și valorile comparate, așa că merită să scrii propriul mesaj atunci când spune mai mult decât atât.

Mesaje simple

Două verificări booleene simple, fiecare în propriul test, fiecare cu un mesaj simplu. Ambele trec aici, așa că mesajele rămân tăcute, iar rezumatul spune pass 2.

Prompt
Scrie un fișier de test TypeScript cu o funcție isEven și două teste care verifică, folosind assert.ok cu un mesaj simplu, că isEven(4) este true și că isEven(3) este false. Arată rezultatul în care testele trec.
Ieșire: program TypeScript și rezultatul capturat
Plain messages