【发布时间】:2020-12-21 00:53:28
【问题描述】:
我已经建立了一个这样的错误处理程序:
const logger = require('./logger');
module.exports = () => {
process.on('uncaughtException', (err) => {
logger.error(err.message, err);
process.exit(1);
});
process.on('unhandledRejection', (err) => {
throw err;
});
};
现在我想对此进行单元测试,主要是第一个事件监听器。我当前的测试如下所示:
const logger = require('../../utils/logger');
require('../../utils/unhandledErrors')();
describe('Uncaught Exceptions', () => {
it('should log the exception and exit the process', () => {
process.exit = jest.fn();
logger.error = jest.fn();
jest.fn(() => {
throw new Error('fake error');
})();
expect(logger.error).toBeCalledTimes(1);
expect(process.exit).toBeCalledTimes(1);
expect(process.exit).toBeCalledWith(1);
});
});
上面的代码在抛出新的错误行时失败,尽管有 --verbose 标志,但没有任何有用的信息被 jest 记录到控制台。
有关如何对此类模块进行单元测试的任何建议?我浏览了下面的链接,但一无所获。
How to test a unhandledRejection / uncaughtException handler with jest
【问题讨论】:
标签: node.js unit-testing jestjs