Обработчик ошибок теста модуля sinon-chai не может работать должным образом - PullRequest
0 голосов
/ 16 мая 2019

Я использую мокко, чай, синон для юнит-теста. Я хочу провести модульное тестирование функции обработчика ошибок:

import { logger } from '../service/logger';
import { InternalServerError } from './InternalServerError';
    export function errorHandler(error: any, req: any, res: any, next: any) {
      logger.error(error.message);
      return res.status(500).json(new InternalServerError(error.message));
    }

здесь есть функция тестирования

import { expect, sinon } from '../../helpers/chai';
    import { InternalServerError } from '../../../errors/InternalServerError';
    import { errorHandler } from '../../../errors/ErrorHandler';
    import 'mocha';
    describe('ErrorHandler', () => {
      it('Handles Error', () => {
        const logger = {
          error: sinon.spy()
        };
        const res = { status: sinon.stub(), json: sinon.spy() };
        res.status.withArgs(500).returns(res);
        const req = {};
        const error = new InternalServerError();
        const next = sinon.spy();
        errorHandler(error, req, res, next);
        return Promise.all([
           expect(logger.error.withArgs(error)).to.be.calledOnce,
           expect(
             res.json.withArgs({
                  message: 'Internal server error'
                })
            ).to.be.calledOnce
          ]);
      });
    });

вот вспомогательный файл

import * as sinon from 'sinon';
import { expect } from 'chai';
import * as chai from 'chai';
import * as sinonChai from 'sinon-chai';
import * as chaiAsPromised from 'chai-as-promised';

chai.use(sinonChai);
chai.use(chaiAsPromised);

chai.config.includeStack = true;

export { expect, sinon };

и я получил такой результат: 0 проходов (35 мс) 1 ошибка

1) ErrorHandler Обрабатывает ошибку: Ошибка типа: [Function: errorHandler] не является шпионом или вызовом шпиону!

как пройти этот юнит-тест.

...