使用 process.on('unhandledRejection') 和 AVA 的测试代码

Testing code that uses process.on('unhandledRejection') with AVA

如何使用 AVA 测试注册了 unhandledRejection 回调的库:

  process.on('unhandledRejection', e =>
    // do something effectful
  );

在这种环境下,未处理的拒绝不一定是库中的错误。我想确保我的库能够抵抗用户的回调导致未处理的拒绝。

没有办法做到这一点,我必须使用不同的测试框架(如 Tape)来执行这些测试。

AVA 会将测试文件中未处理的拒绝视为失败。您必须 运行 您的代码“别处”,作为子进程或工作线程。


I want to ensure that my library is robust against users' callbacks causing an unhandled rejection.

恕我直言,这是您的用户问题。如果您的库调用用户提供的代码并且您正在等待承诺 return 值,您 可以 尝试/捕获该错误,但可以说让程序崩溃是完全有效的。