Laufen Mokka programmgesteuert und pass-Ergebnisse zur variable oder Funktion
Ich habe setup eine Reihe von tests in Mokka mit ZombieJS und Chai. Die tests laden, bis eine Webseite und überprüfen Sie, ob verschiedene Leistungen gebucht sind richtig und zeigen den Besuchern der website.
Was ich bin mit dem Ziel für ist, dass die tests ausgeführt werden, die täglich und dann per E-Mail die Ergebnisse an mein team. Die tests sind alle laufen wie erwartet, aber die Blockade, die ich getroffen habe, ist die folgende.
Wie gebe ich die JSON-reporter-Ergebnisse zu einem anderen node.js Skript, wo kann ich E-Mail die Ergebnisse. Aufbau der E-Mail und senden es wird straight nach vorne nodemailer und Unterstrich templating.
Meine aktuellen denken ist, gibt es zwei Ansätze. Führen Sie den mocha-test mit einem shell-Skript und übergeben Sie die JSON-Ausgabe in einem Skript-Knoten und Verarbeitung der JSON von einer Befehl Linie argument. So etwas wie...
mocha test/services/homepage.js > node email.js
Die andere alternative ist, führen Sie die tests in einem Skript-Knoten und erhalten das Ergebnis in eine variable. Ich habe mit Informationen von hier aus laufen die tests im Knoten.
https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically
Diese korrekt läuft, aber ich bin verloren, wie man die JSON-reporter-Ergebnisse in eine variable aus dem code unten.
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
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie hören die runner Ereignisse wie in https://github.com/mochajs/mocha/blob/master/lib/runner.js#L40 und bauen Sie Ihren eigenen Bericht.
Ich würde vorschlagen, mit einem mocha-reporter, wie hier beschrieben
https://github.com/mochajs/mocha/wiki/Third-party-reporters
aufrufen Mokka wie diese
und die
MyReporter.js
Datei sieht wie folgt ausHmm normalerweise Menschen mit einem CI-bot zu erreichen, was Sie zu tun versuchen. Jedoch, in Bezug auf Ihre direkte Frage, immer das Ergebnis von JSON-reporter, ich weiß nicht, ob es einen besseren Weg, es zu erreichen, aber hier ist was ich tun würde, nach dem Lesen der Mokka-Quelle. Sie müssen erstellen Sie die Suite, die Läufer und bekommen die reporter selbst (Kopie aus https://github.com/mochajs/mocha/blob/master/test%2Freporters%2Fjson.js):
testResults
bekomme ich undefined, damit es nicht so aussieht, wie die vorgeschlagene Lösung funktioniert. Ich wäre daran interessiert zu hören, mehr über die CI-Bot, die Sie erwähnt.MochaReporter
bekomme ich die folgende{ stats: { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 }
also es sieht nicht so aus wie seine laden des tests, etwas, das bezieht sich auf die Suite vielleicht?runner.run
stattmocha.run
. Ich aktualisiert meine Antwort. Bitte versuchen Sie es erneut.