Sinon-Spion auf der Konsole.melden Sie rufen nicht registriert
Ich versuche zu lernen über Sinon und wollen, um Spion auf console.log
. Der code ist einfach:
function logToConsole() {
console.log('Hello World');
}
exports.logToConsole = logToConsole;
Aber wenn ich es testen möchte, es funktioniert nicht, weil der Aufruf console.log
ist nicht registriert im system unter test:
var chai = require('chai'),
expect = chai.expect,
sinonChai = require('sinon-chai'),
sinon = require('sinon'),
sut = require('../src/logToConsole');
chai.use(sinonChai);
describe('logToConsole', function() {
it('should spy on console.log', function() {
sinon.spy(console, 'log');
sut.logToConsole();
expect(console.log).to.have.been.called;
});
});
Aber wenn ich ausführen console.log
im inneren der test selbst, es ist gefangen und übergibt:
it('should spy on console.log', function() {
sinon.spy(console, 'log');
sut.logToConsole();
console.log('Test');
expect(console.log).to.have.been.called;
});
Interessant, es scheint nicht in der Lage sein, um Spion auf der innen-Funktionsaufrufe an alle. Ist das nicht der Zweck einer Spionage-Bibliothek?
z.B.
function a() {};
function b() {
a();
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es sieht aus wie du bist nicht wirklich mit
sinon-chai
, den code, den Sie post fehlt diese Zeile:BEARBEITEN: hier ist der code, den ich getestet mit:
console.log()
für die Ausgabe, so dass, wenn Sie deaktivierenconsole.log()
(beispielsweise durch das stubbing es anstelle von Spionage auf Sie), werden Sie verlieren (einen Teil) der Mokka-test-Ausgabe als gut.console
direkt. Verwenden Sie stattdessen eine logger-Bibliothek oder-Funktion, so können Sie nur stub, der.