шпионаж на bunyan log - NodeJS

Есть ли способ, которым я могу следить за журналом bunyan, чтобы я распечатывал то, что я ожидаю?

MyFile.js

const bunyan = require('bunyan');
const log = bunyan.createLogger({name: 'FailureAuditService'});

class someClass {
   someFunct() {
     if(x) {
        log.warn('something happened');
     }
   }
}

Контрольная работа

const service = require(../MyFile);

describe('test something', () => {
    it('Will test the bunyan log', res => {
       let consoleLog = sinon.spy(log, 'createLogger');
       let x = true;

       service.someClass(x).then(res => {
          let expected = 'something happened';
          consoleLog.should.equal(expected);
       });
    });
})

javascript,node.js,testing,sinon,bunyan,

0

Ответов: 2


1

Да, с Jest это довольно легко:

let spyLogWarn = jest.spyOn(require('bunyan').prototype, 'warn')
// ...
expect(spyLogWarn).toHaveBeenCalled()

0 принят

Я работал над этим со следующим:

const mockReq = require('mock-require);

...

let infoStub = sinon.stub();
let warnStub = sinon.stub();

logStubs = {
   info: infoStub,
   warn: warnStub
   // any other log methods you wish to use
};

mockReq('bunyan', {
   createLogger() {
      return logStubs;
   }
});

...

Затем я использовал функцию mockReq.reRequire () для сброса кеша службы, которую я хотел высмеять.

Чтобы утвердить фактическое содержимое журналов:

let infoLog = infoStub.firstCall.args[0];
let warnLog = warnStub.firstCall.args[0];

С этим я мог бы утверждать, что они равны всем, что я ожидал.

JavaScript, Node.js, тестирование, Sinon, Баньян,
Похожие вопросы