Rask og enkel JavaScript-testing med Assert

For mange år siden lærte jeg en villedende enkel "hevn"? Fungerer fra John Resig, for å teste JavaScript. Utrolig, på knapt fem eller seks linjer, gir denne koden et stort nivå av strøm og kontroll over koden din, når du tester. Jeg skal vise deg hvordan du bruker den i dagens videoprat.


Full Screencast



"Assert" -kode

     Enkel JavaScript-testing     

    Det er alt du trenger for de fleste grunnleggende testing! Påstandsfunksjonen godtar to parametere:

    1. utfall: En boolsk, som refererer til om testen din har passert eller mislyktes
    2. beskrivelse: En kort beskrivelse av testen din.

    De hevde funksjon så oppretter du bare en liste element, bruker en klasse av enten "pass" eller "mislykkes", avhengig av om testen ble returnert sann eller falsk, og legger deretter til beskrivelsen i listeposten. Endelig legges den koden til koden til siden. Det er galt enkelt, men fungerer perfekt.


    Test 1: Ditt første eksempel

     funksjon legge til (num1, num2) return num1 + num2;  var resultat = legg til (5, 20); assert (resultat == 24, 'Kontrollerer add-funksjonen'); // ELLER hevde (legg til (5, 20) == 24, 'Kontroller add-funksjonen');


    Test 2: Closures

     var noenArray = [1,2,3,4,5], len = someArray.length, i = 0; var teller = 0; for (; < len; i++ )  setTimeout(function()  assert( count++ === i, 'Checking the value of: ' + i ); , i * 300); 
    UH oh! Hva skjedde?

    Dette er et vanlig problem, og svaret er å gjennomføre en lukning, slik at vi kan huske verdien av "jeg." Ellers, som vi la merke til ovenfor, vil koden bare gi den endelige verdien i sekvensen: 5.

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


    Konklusjon

    I begynnelsen kan det virke som om bare store JavaScript-biblioteker og lignende krever noen form for testing; Det er imidlertid langt fra sannheten. Som vi har demonstrert, kan en enkel funksjon, som Resig's "assert", potensielt spare oss fra timer med feilsøking! Så hva bruker du personlig til å teste koden din?