使用Sinon解决Pino问题

问题描述

我正在尝试为服务函数编写单元测试,该函数在运行时返回Pino日志消息。我已经通过 service.js 中使用的记录器模块,使用Sinon构建了一个存根,但是未能获得成功的测试。测试返回: AssertionError:预期错误已被精确调用过一次,但被调用0次

理想情况下,我希望能够断言记录器已被调用,并且该函数返回了确切的记录器调用和消息。

下面是一些我想要实现的示例代码

logger.js

const pino = require('pino');

const defaultLogger = pino({},'output.log');


module.exports = {
  defaultLogger
}

service.js

const path = require('path');
const { defaultLogger } = require('../common/logger');
const logger = defaultLogger.child({ filename: path.basename(__filename) });

const logResponse = () => {
  return logger.info('successful');
};

service.test.js

const sinon = require('sinon');
const chai = require('chai');
const sinonChai = require('sinon-chai');
const service = require('../service.js')
const { defaultLogger } = require('../common/logger');
const { expect } = chai;
chai.should();
chai.use(sinonChai);

describe('Service Test',() => {
  it('should return a log message',() => {
    const spy = sinon.spy(service,'logResponse')
    const stub = sinon.stub(defaultLogger,'error');
    spy.should.have.been.calledOnce;
    expect(stub).to.have.been.calledOnce;
    spy.should.have.returned(logger.info('successful'));
  })
})

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)