2012-03-08 15 views
15

Supponiamo che io abbia una funzione come segueUtilizzando Jasmine per spiare le variabili in una funzione

function fun1(a) { 
    var local_a = a; 
    local_a += 5; 
    return local_a/2; 
} 

Esiste un modo per verificare il valore di local_a è quello che dovrebbe essere (per esempio nella prima linea di codice)? Sono un po 'nuovo per Jasmine, quindi sono bloccato. Grazie in anticipo.

risposta

15

Non proprio. È possibile effettuare le seguenti operazioni però:

prova il risultato di fun1():

expect(fun1(5)).toEqual(5); 

assicurarsi che sia effettivamente chiamato (utile se succede attraverso eventi) e anche testare il risultato:

var spy = jasmine.createSpy(window, 'fun1').andCallThrough(); 
fire_event_calling_fun1(); 
expect(spy).toHaveBeenCalled(); 
expect(some_condition); 

Riproduce realmente l'intera funzione controllando i risultati intermedi:

var spy = jasmine.createSpy(window, 'fun1').andCallFake(function (a) { 
    var local_a = a; 
    expect(local_a).toEqual(a); 
    local_a += 5; 
    expect(local_a).toEqual(a+5); 
    return local_a/2; 
}); 
fun1(42); 
expect(spy).toHaveBeenCalled(); 
+0

I tipo di sus pect questo sarebbe il caso. Ma grazie per la risposta dettagliata. Il secondo approccio era nuovo per me! –

+0

Ah contento che ti sia piaciuto. Puoi vedere ulteriori informazioni sulle spie all'indirizzo https://github.com/pivotal/jasmine/wiki/Spies e http://pivotal.github.com/jasmine/jsdoc/symbols/jasmine.Spy.html – ggozad

Problemi correlati