【问题标题】:How write unit test for configure winston with sinon?如何用 sinon 编写单元测试来配置winston?
【发布时间】:2020-04-04 10:56:51
【问题描述】:

我为 winstin 编写了配置:

import {createLogger, format, Logger, transports} from "winston";

export const logger: Logger = createLogger({
    level: 'debug',
    format: format.combine(
        format.timestamp(),
        format.json()
    ),
    transports: [
        new transports.Console()
    ]
});

但我不知道如何为此配置编写单元测试。

【问题讨论】:

    标签: typescript unit-testing sinon winston sinon-chai


    【解决方案1】:

    这是使用proxyquire的单元测试解决方案:

    logger.ts:

    import { createLogger, format, Logger, transports } from 'winston';
    
    export const logger: Logger = createLogger({
      level: 'debug',
      format: format.combine(format.timestamp(), format.json()),
      transports: [new transports.Console()],
    });
    

    logger.test.ts:

    import proxyquire from 'proxyquire';
    import sinon from 'sinon';
    
    describe('61027051', () => {
      it('should pass', () => {
        const winstonStub = {
          createLogger: sinon.stub(),
          format: {
            combine: sinon.stub(),
            timestamp: sinon.stub(),
            json: sinon.stub(),
          },
          transports: {
            Console: sinon.stub(),
          },
        };
        proxyquire('./logger', {
          winston: winstonStub,
        });
        sinon.assert.calledWith(winstonStub.createLogger, {
          level: 'debug',
          format: sinon.match.any,
          transports: sinon.match.array,
        });
      });
    });
    

    100% 覆盖率的单元测试结果:

      61027051
        ✓ should pass (1999ms)
    
    
      1 passing (2s)
    
    -----------|---------|----------|---------|---------|-------------------
    File       | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
    -----------|---------|----------|---------|---------|-------------------
    All files  |     100 |      100 |     100 |     100 |                   
     logger.ts |     100 |      100 |     100 |     100 |                   
    -----------|---------|----------|---------|---------|-------------------
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-03
      • 2019-01-28
      • 2015-01-16
      • 2021-03-15
      • 2016-03-10
      • 2011-01-28
      • 1970-01-01
      相关资源
      最近更新 更多