Snel en eenvoudig JavaScript testen met Assert

Jaren geleden leerde ik een bedrieglijk eenvoudig "beweren" ?? functie van John Resig, voor het testen van uw JavaScript. Verbazingwekkend genoeg biedt deze code op nauwelijks vijf of zes regels een geweldig niveau van controle over uw code tijdens het testen. Ik zal je laten zien hoe je het kunt gebruiken in de snelle videotip van vandaag.


Volledige screencast



"Assert" -code

     Eenvoudig JavaScript-testen     

    Dat is alles wat u nodig heeft voor de meeste basistests! De assert-functie accepteert twee parameters:

    1. resultaat: Een boolean, die aangeeft of uw test is geslaagd of mislukt
    2. Omschrijving: Een korte beschrijving van uw test.

    De beweren functie maakt dan eenvoudig een lijstitem, past een klasse toe van "pass" of "fail", afhankelijk van of uw test true of false heeft geretourneerd en voegt vervolgens de beschrijving toe aan het lijstitem. Ten slotte wordt dat blok gecodeerd toegevoegd aan de pagina. Het is gek eenvoudig, maar werkt perfect.


    Test 1: uw eerste voorbeeld

     functie add (num1, num2) return num1 + num2;  var result = add (5, 20); beweren (result == 24, 'De toevoegfunctie controleren'); // OF bevestig (voeg toe (5, 20) == 24, 'De toevoegfunctie controleren');


    Test 2: sluitingen

     var someArray = [1,2,3,4,5], len = someArray.length, i = 0; var count = 0; voor (; < len; i++ )  setTimeout(function()  assert( count++ === i, 'Checking the value of: ' + i ); , i * 300); 
    Oh Oh! Wat is er gebeurd?

    Dit is een veelvoorkomende kwestie en het antwoord is om een ​​afsluiting te implementeren, zodat we de waarde van 'i' kunnen onthouden. Anders, zoals we hierboven opmerkten, geeft de code alleen de uiteindelijke waarde in de reeks weer: 5.

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


    Conclusie

    In eerste instantie kan het lijken alsof alleen grote JavaScript-bibliotheken en dergelijke enige vorm van testen vereisen; dat is echter verre van de waarheid. Zoals we hebben aangetoond, kan zelfs een eenvoudige functie, zoals de bewering van Resig, ons mogelijk uren achter het debuggen besparen! Dus wat doe je persoonlijk om je code te testen??