Я пытаюсь узнать о Синоне и хочу следить за console.log
. Код прост:
function logToConsole() {
console.log('Hello World');
}
exports.logToConsole = logToConsole;
Но если я хочу протестировать его, это не сработает, потому что вызов console.log
не зарегистрирован внутри тестируемой системы:
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;
});
});
Однако, если я выполняю console.log
внутри самого теста, он захватывается и передает:
it('should spy on console.log', function() {
sinon.spy(console, 'log');
sut.logToConsole();
console.log('Test');
expect(console.log).to.have.been.called;
});
Интересно, что, похоже, он вообще не может всматриваться во внутренние вызовы. Разве это не цель шпионской библиотеки?
например.
function a() {};
function b() {
a();
}