Wie testet man Konsolenausgaben mit Mocha auf Nodejs?
Berücksichtigen Sie das folgende Beispiel Javascript-code unten:
function privateFunction (time) {
if (time < 12) { console.log('Good morning'); }
if (time >= 12 && time <19) { console.log('Good afternoon'); }
else { console.log('Good night!'); }
};
Wie soll ich unit test, der auf nodejs mit Mokka (und möglicherweise sinonjs), zu bemerken, dass dies eine private Funktion in einem Modul? Ich übergeben zu müssen, in der Argumentation und überprüfen, ob die Funktion bei der Anmeldung das richtige für die Konsole.
Kann ich tun das gleiche mit console.warn
und console.error
?
InformationsquelleAutor der Frage kemelzaidan | 2015-06-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich lieber
Mokka-sinon
über "plain" sinon, weil es integriert sich sehr schön mit Mokka.Beispiel:
Ein mögliches Problem: einige Mocha-Reporter verwenden
console.log
als gut, so dass die tests, dass die stub kann es nicht passt-Ausgang.Gibt es ein workaround, aber es ist nicht optimal, entweder weil es durchsetzen Mokka-Ausgabe mit der Ausgabe von
privateFunction()
. Wenn das nicht ein problem, ersetzen SiebeforeEach()
:InformationsquelleAutor der Antwort robertklep
ignorieren die Tatsache, dass es eine private function ist, würde ich ein paar Schritte; umgestalten mein code für eine bessere Trennung von Bedenken, und nutzen Sie diese Trennung mit test-doubles.
nehmen Sie alle Nebenwirkungen, die außerhalb Ihrer eigenen Modulen (die Nebenwirkung, die hier schreiben in der Konsole):
out.js
app.js
verwenden einige module proxy/Spion, wie proxyquire zu ersetzen, das ganze aus writer beim testen:
app.spec.js
InformationsquelleAutor der Antwort Eliran Malka