2012-06-21 13 views
5

Ho una domanda su come testare una situazione specifica in Mocha per Node.js. Supponiamo che ho avuto il seguente codice nel mio app ...Verificare che una funzione chiami un'altra funzione con Mocha

function a() { 
    //... 
} 

function b() { 
    //... 
} 

function c() { 
    if(condition) { 
     a(); 
    } else { 
     b(); 
    } 
} 

Se fossi test di funzionalità c, come avrei potuto verificare che la funzione o la funzione di un b stato chiamato? C'è un modo per fare questo?

risposta

5

ho trovato una soluzione per quello che stavo cercando di fare. Sinon spies può aiutare a determinare se una determinata funzione è stata chiamata o meno.

1

Questo è ciò che è code coverage. Fortunatamente la moka ha il supporto per fare leva con lo JSCoverage. Io uso un MakeFile che assomiglia:

coverage: 
    rm -rf lib-cov 
    jscoverage --no-highlight lib lib-cov 
    @MOCHA_COV=1 mocha --reporter html-cov > coverage.html 
    google-chrome coverage.html 
  1. La prima linea rimuove (precedente) strumentato file JavaScript (cartella) necessari per Mocha per visualizzare la copertura del codice.
  2. La seconda riga utilizza jscoverage nella cartella creata da lib-cov dalla cartella originale lib.
  3. La terza riga serve per assicurarsi che il mio codice nodo sappia che è necessario eseguire il codice strumentato.
  4. Infine visualizzo coverage.html in google-chrome.

Nel mio file di prova moka Ho una linea che assomiglia:

var BASE_PATH = process.env.MOCHA_COV ? './../lib-cov/' : './../lib/'; 

In questo modo quando MOCHA_COV=1 verrà utilizzato il codice strumentato.


Alcuni link più interessanti su copertura di codice:

Problemi correlati