gpt4 book ai didi

javascript - 如何确保 Jest 在 "unhandledRejection"上失败?

转载 作者:行者123 更新时间:2023-12-04 21:04:01 26 4
gpt4 key购买 nike

我们的单元测试在我们的持续交付管道中的容器中运行。

有时,我们不会在单元测试中处理拒绝,但是,我认为这是不正确的,并且我认为管道应该失败。

如何确保在执行 jest 时在测试期间,unhandledRejection事件发生,jest 会退出并出错?

我试图在设置脚本中 Hook 事件监听器:

/* jest.config.js */
module.exports = {
setupFiles: ['<rootDir>/test/setup.ts'],
// ...
}

在那个设置脚本中,我可以检测到 unhandledRejection事件,但不幸的是,我不能开 Jest
process.on('unhandledRejection', () => {
console.error('Now what?');
console.error('I want to make sure that jest exits with an error!');
});

最佳答案

您可以创建一个 jest 配置文件 jest.config.js并将以下条目放入其中:

module.exports = {
...
setupFiles: ['<rootDir>/test/setup.js'],
...
};

然后在你的 setup.js文件,您可以执行以下操作:
process.on('unhandledRejection', (err) => {
fail(err);
});

unhandledRejection将无法通过测试,但有两个注意事项需要注意:
  • 在没有测试运行时拒绝的 Promise 的未处理拒绝将结束该过程。这可能是您想要和期望的。
  • 在运行新测试时拒绝的 promise (不是启动 promise 的那个)的未处理拒绝将失败新测试,而不是原始测试。这很令人困惑,并且会导致难以跟踪错误。

  • 作为上面提到的评论者,如果你的测试写得很好,那么你永远不应该遇到这种情况,但你并不总是有那么多的控制权。

    关于javascript - 如何确保 Jest 在 "unhandledRejection"上失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51105622/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com