2013-10-09 13 views
5

Ho una suite di test esistente che funziona bene in node.js con moka, richiedere e gelsomino, con test in esecuzione tramite uno script psake PowerShell. Sto tentando di aggiungere la copertura dei test, in modo da eseguire il test di unità invece di fare:Come posso ottenere istanbul lavorare con nodo, moka, gelsomino e richiedono js

unitTest.js nodo

sto facendo

unitTest.js copertura Istanbul

che sembra funzionare ma mi fornisce solo informazioni sulla copertura sullo unitTest.js stesso, ma non su nessuno degli altri file javascript in uso nel progetto. Sto indovinando che è a causa della combinazione require/mocha quindi non conosce i file js che sto usando.

ho cercato strumentazione manualmente tutti i file come un passo prima della copertura del codice e l'esecuzione lo stesso comando sui file copiati/strumentate ma ho ottenuto lo stesso risultato. Qualche consiglio su come fare questo lavoro?

Ecco l'ultima parte del unitTest.js

requirejs(['mocha'], function(Mocha) { 
var mocha = new Mocha({reporter: (process.env['TEAMCITY_VERSION'] ? 'teamcity' : 'spec')}); 
// Hack to establish the global variables (sigh) 
mocha.suite.emit('pre-require', global, __filename, mocha); 

fswalk(__dirname, function(err, results) { 
    if (err) 
     console.warn(err); 
    else { 
     var testName = process.argv[2] || ""; 
     console.log("testName: " + testName); 
     var inclusionSuffixes = [testName + '.test.js']; 
     var exclusionSuffixes = ['.integration.test.js']; 
     var tests = _.filter(results, function (result) { 
      var test = function (suffix) { return result.indexOf(suffix) == result.length - suffix.length; }; 
      return _.any(inclusionSuffixes, test) && !_.any(exclusionSuffixes, test); 
     }); 
     requirejs(tests, function() { 
      mocha.run(function(failures) { 
       process.exit(failures); 
      }); 
     }); 
    } 
}); 

});

+1

utilizzando il contesto-run-in---hook parametro lo fa funzionare correttamente – user2576666

+1

Puoi per favore renderlo una risposta? – gcedo

risposta

-1

Un'alternativa a cercare di convincere questi vari pezzi di lavorare insieme da soli è quello di utilizzare Intern.

Questo ha senso soprattutto per i progetti che utilizzano AMD (require.js). Usa Istanbul sotto il cofano e ha un server proxy che controlla automaticamente il tuo codice. È un set molto fluido per quello che stai cercando di fare.

0

@ user2576666 risposto alla domanda nei commenti:

"Utilizzando il parametro --hook-run-in-context lo fa funzionare correttamente"

Problemi correlati