febbraio 2011 Blog Posts
Oggi mi sono imbattuto in un problema imprevisto e voglio condividerlo perché potrebbe tornare utile a chi non padroneggia Javascript.
Supponiamo di avere un oggetto definito come segue:
function AnObject() {
this.value = 1000;
var set_value = function(new_value) {
this.value = new_value;
};
this.start = function() {
set_value(5);
}
}
L'oggetto ha un field pubblico chiamato value, un metodo pubblico chiamato start ed un metodo privato chiamato...
Prima di proseguire consiglio la lettura della
prima parte e della
seconda parte.
In questo post affronteremo l'argomento dei mock object. Una prima tentazione potrebbe essere quella di cercare una libreria di mock per
Javascript, ma vista la sua natura dinamica proviamo a farne a meno.
Partiamo da un esempio per introdurre l'argomento. Supponiamo di voler testare il seguente metodo:
function show_alert(text) {
alert(text);
}
Ovviamente se eseguiamo tale metodo vedremo comparire una message box. Vediamo se riusciamo a testare l'interazione.
Per prima cosa occorre che quando viene chiamato alert venga eseguita una function nostra e non quella standard.
Occorre anche che quando il test...
Nello scorso post
ho descritto come scrivere test automatici per Javascript. Uno degli svantaggi della soluzione proposta
sta nel ricordarsi di chiamare le function di test. Infatti se guardiamo il codice della pagina html:
$(document).ready(function(){
sum_test();
})
Vediamo la chiamata a sum_test che contine il test. Se abbiamo molti di questi metodi la manutenzione dell'elenco puo'
diventare piuttosto noiosa e error-prone.
Una soluzione è quella di creare un oggetto Javascript che esegua automaticamente tutte le function
che terminano per _test.
In Javascript esiste l'oggetto globale window il quale contiene, tra le altre cose,...
Ultimamente sto lavorando con il linguaggio Javascript.
All'inizio ho avuto qualche difficoltà, perché la sintassi è molto
lontana da quella dei linguaggi con cui ho sviluppato in passato o sviluppo abitualmente (C#, C++, Java),
ma con il tempo ha iniziato a piacermi, soprattutto per la semplicità e potenza espressiva.
L'attività che sto svolgendo è la copertura di test di codice esistente e un refactoring
per migliorarne la leggibilità, in modo da poter aggiungere funzionalità limitando la
probabilità di regressioni.
Per i test automatici utilizziamo QUnit.
Vediamo un esempio. Supponiamo di avere il file sum.js con il seguente metodo da testare:
function sum() {
...