Exécutez Mocha par programme et transmettez les résultats à variable ou à fonction

J'ai configuré une suite de tests à moka en utilisant ZombieJS et Chai. Les tests de charge d'un site web et de vérifier si les différents services sont comptabilisées correctement et afficher aux visiteurs du site.

Ce que je vise, c'est que les tests sont exécutés quotidiennement et puis l'envoyer par courriel les résultats de mon équipe. Les tests sont tous en cours d'exécution comme prévu, mais le blocage que j'ai trouvé est la suivante.

Comment puis-je passer le JSON journaliste de résultats à l'autre node.js script où je peux e-mail les résultats. La construction de l'e-mail et l'envoi, ça va être tout droit vers l'avant à l'aide de nodemailer et de souligner la création de modèles.

Actuel de ma pensée est qu'il y a deux approches. Exécutez le moka le test avec un script shell et le tuyau de la sortie JSON à un nœud de script et le processus de JSON à partir d'un argument de ligne de commande. Quelque chose comme...

mocha test/services/homepage.js > node email.js

L'autre alternative est d'exécuter les tests à partir de l'intérieur d'un nœud de script et obtenir le résultat dans une variable. J'ai été en utilisant les informations de ici pour lancer les tests à l'intérieur du nœud.

https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically

Cela fonctionne correctement, mais je suis perdu avec comment obtenir le JSON reporter les résultats dans une variable dans le code ci-dessous.

var Mocha = require('mocha'),
    Suite = Mocha.Suite,
    Runner = Mocha.Runner,
    Test = Mocha.Test;

//First, you need to instantiate a Mocha instance


var mocha = new Mocha({
    reporter: 'json'
});



var suite = new Suite('JSON suite', 'root');
var runner = new Runner(suite);
var mochaReporter = new mocha._reporter(runner);


mocha.addFile(
    '/Users/dominic/Git/testing-rig/test/services/homepage.js'
);

runner.run(function(failures) {
    //the json reporter gets a testResults JSON object on end
    var testResults = mochaReporter.testResults;

    console.log(testResults);
    //send your email here
});

Si quelqu'un a quelques conseils sur la meilleure façon d'aborder cette question ou si je vais dans la direction complètement fausse sur ce, je vous remercie de toutes les suggestions.

source d'informationauteur dlearious | 2015-03-14