我们的单元测试在连续交付管道中的容器中运行。
有时候,我们不会在单元测试中处理拒绝,但是,我认为这是不正确的,并且我认为管道会失败。
如何确保在执行jest
并在测试期间发生unhandledRejection
事件,玩笑会退出并显示错误?
我试图将事件监听器挂接到安装脚本中
/* jest.config.js */
module.exports = {
setupFiles: ['<rootDir>/test/setup.ts'],
// ...
}
在该安装脚本中,我可以检测到unhandledRejection
个事件,但不幸的是,我无法开玩笑
process.on('unhandledRejection', () => {
console.error('Now what?');
console.error('I want to make sure that jest exits with an error!');
});
答案 0 :(得分:2)
您可以创建一个笑话配置文件jest.config.js
并将以下条目放入其中:
module.exports = {
...
setupFiles: ['<rootDir>/test/setup.js'],
...
};
然后在您的setup.js
文件中,您可以执行以下操作:
process.on('unhandledRejection', (err) => {
fail(err);
});
unhandledRejection
将通过测试,尽管需要注意两个注意事项:
正如上面提到的评论者,如果您的测试写得很好,那么您永远都不会遇到这种情况,但是您并不总是拥有那么多的控制权。
答案 1 :(得分:0)
运行jest时添加以下标志对我有用:
--detectOpenHandles --forceExit --runInBand
答案 2 :(得分:0)
除了@ andrew-eisenberg答案外,您还可以按以下方式在package.json中配置安装文件:
"jest": {
...
"setupFiles": ["<rootDir>/../test/setup.ts"],
...
}
src doc