2012-06-21 15 views
5

Tengo una pregunta sobre probar una situación específica en Mocha para Node.js. Supongamos que tenía el siguiente código en mi aplicación ...Probar que una función llame a otra función con Mocha

function a() { 
    //... 
} 

function b() { 
    //... 
} 

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

Si se prueba el funcionamiento del c, ¿cómo podría verificar que la función de una o función b llamaron? ¿Hay alguna forma de hacer esto?

Respuesta

5

he encontrado una solución para lo que yo estaba tratando de hacer. Sinon spies puede ayudar a determinar si una determinada función fue llamada o no.

1

Eso es para lo que code coverage es. Afortunadamente, mocha tiene soporte para ese aprovechamiento de JSCoverage. Yo uso un Makefile que se parece a:

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 primera línea elimina (anterior) instrumentado archivos javascript (carpeta) necesarios para Mocha para mostrar la cobertura de código.
  2. La segunda línea usa jscoverage para crear la carpeta instrumentada lib-cov de la carpeta original lib.
  3. La tercera línea se utiliza para garantizar que mi código de nodo sepa que necesita ejecutar el código instrumentado.
  4. Finalmente veo coverage.html en google-chrome.

En mi archivo de prueba moka que tienen una línea que se parece a:

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

De esta forma cuando MOCHA_COV=1 continuación, se utilizará el código instrumentado.


Algunos enlaces más interesantes acerca de la cobertura de código:

Cuestiones relacionadas