我们的单元测试在持续交付管道的容器中运行。
有时,我们不会在单元测试中处理拒绝,但是,我认为这是不正确的,并且在我看来管道应该失败。
我怎样才能确保当我执行时jest
并且在测试期间unhandledRejection
事件发生,jest 会错误退出?
我尝试在设置脚本中挂钩事件侦听器:
/* 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!');
});
您可以创建一个笑话配置文件jest.config.js
并将以下条目放入其中:
module.exports = {
...
setupFiles: ['<rootDir>/test/setup.js'],
...
};
然后在你的setup.js
文件,你可以这样做:
process.on('unhandledRejection', (err) => {
fail(err);
});
And unhandledRejection
将无法通过测试,但有两个注意事项需要注意:
- 在没有测试运行时拒绝的承诺的未处理拒绝将结束该过程。这可能就是您想要和期望的。
- 当新测试运行时(不是发起承诺的测试)拒绝的承诺的未处理拒绝将使新测试失败,而不是原始测试失败。这很令人困惑,并且可能会导致难以跟踪错误。
正如上面提到的评论者,如果你的测试写得很好,那么你永远不应该遇到这种情况,但你并不总是有那么多的控制权。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)