Snabb och enkel JavaScript-testning med Assert

För några år sedan lärde jag mig en bedrägligt enkel "hävning" ?? funktion från John Resig, för att testa din JavaScript. Förvånansvärt, med knappt fem eller sex linjer, ger denna kod en hög grad av makt och kontroll över din kod när du testar. Jag ska visa dig hur du använder den i dagens snabba snabbspets.


Full Screencast



"Assert" -koden

     Enkel JavaScript-testning     

    Det är allt du behöver för de flesta grundläggande testning! Assertfunktionen accepterar två parametrar:

    1. resultat: En booleska, som refererar till om ditt test passerat eller misslyckades
    2. beskrivning: En kort beskrivning av ditt test.

    De hävda funktionen skapar helt enkelt en listobjekt, tillämpar en klass av antingen "passera" eller "misslyckas" beroende på om testet är sant eller falskt, och lägger sedan till beskrivningen i listobjektet. Slutligen läggs det blocket kodade till sidan. Det är galet enkelt, men fungerar perfekt.


    Test 1: Ditt första exempel

     funktion add (num1, num2) return num1 + num2;  var resultat = lägg till (5, 20); hävda (resultat == 24, "Kontrollera add-funktionen"); // ELLER hävda (lägg till (5, 20) == 24, "Kontrollera add-funktionen");


    Test 2: Closures

     var someArray = [1,2,3,4,5], len = someArray.length, i = 0; var räknat = 0; för (; < len; i++ )  setTimeout(function()  assert( count++ === i, 'Checking the value of: ' + i ); , i * 300); 
    Hoppsan! Vad hände?

    Detta är ett vanligt problem, och svaret är att genomföra en nedläggning, så att vi kan komma ihåg värdet av "jag". Annars, som vi noterade ovan, kommer koden endast att göra det slutliga värdet i sekvensen: 5.

     var someArray = [1,2,3,4,5], len = someArray.length, i = 0; var räknat = 0; för (; < len; i++ ) (function(i)  setTimeout(function()  assert( count++ === i, 'Checking the value of: ' + i ); , i * 300); )(i);


    Slutsats

    Först kan det verka som om bara stora JavaScript-bibliotek och liknande kräver någon form av testning. det är dock långt ifrån sanningen. Som vi har demonstrerat kan även en enkel funktion, som Resigs "assert", potentiellt rädda oss från timmar av felsökning! Så vad använder du personligen för att testa din kod?