JavaScript koodin testipenkki 'strict mode' -testeihin.
Script tagissa on hyvä olla onerror -parametri, joka ilmoittaa jos kooditiedostosi ei lataudu, jos esim: osoite on väärin, tms. Virheitä voi olla vaikea jäljittää, jos tiedosto ei ole edes latautunut. Ulkoinen kooditiedosto on kuitenkin erittäin hyvä tapa, ei siis ollenkaan HTML -koodin sekaan JavaScriptiä, jos suinkin mahdollista ja yleensä on.
<script src="js/main.js" onerror="alert('Load Err: ' + this.src)">
Luo main.js -niminen tekstitiedosto ja siihen koodi:
var xyz = function () { 'use strict'; // this is wrapper start ...
// Only 'strict mode' -experiments here !
}(); // strict mode wrapper end
Käytä funktiota irroittamaan koodi globaalista.
1. Ensin sulkeet: (); - Irrottaa koodin global -objektista
2. Anonyymi funktio toimii kääreenä
function () {} ();
3. Ensimmäinen asia koodissa on ilmoitus: 'strict mode' -joka kertoo selaimelle, että tähän koodialueeseen on suhtauduttava hiukan tiukemmin, kuin mihin on totuttu. Jos lause tulee vasta funktion sisällä, sen vaikutusalue on vain kyseisen funktion sisäinen, tuolloin globaali objekti koodataan kuten tavallisesti, eli strict mode ei ole silloin voimassa globaalilla alueella.
4. Virheilmoituskoodit on hyvä koodailla nyt saman tien, kun kerran testipenkkiä tehdään:
- virheilmoitus kertoo miltä riviltä bugi löytyi, joten löydät sen nopeammin.
- virheilmoitus kertoo miltä riviltä bugi löytyi, joten löydät sen nopeammin.
Lisätään Try - cach() - finally -alueet:
try { /*debug area*/
window.onerror=function(msg,Url,Ln,ch){
alert("Window error:\n" + msg + "\nURL: " + Url + "\nLine: " + Ln+"/"+ch);
};
///// TESTIALUE ALKAA - TÄSTÄ ETEENPÄIN SAA MUOKATA ///////////
// Teretuloa 'strict mode' -kokeilujen kentälle !
var put = function(w) {alert('Viesti: ' + w ); };
put("Heippa Maailma"); // testataan 'put' -funktiota
///// TESTIALUE LOPPUU - ÄLÄ MUOKKAA TÄTÄ ALEMPAA ///////////
} catch (e) { //Tämä blokki ajetaan jos virhe tapahtuu
throw e; //window.error() kertoo virheen rivinumeron!
} finally { //Tämä blokki ajetaan joka kerta
//alert("'main.js' sivu on ladattu!");
} // try
Unit -testaus olisi seuraava vaihe...