Javascript 柴为什么扔不被抓住?

Javascript chai why throw not caught?

我正在 Windows 10 上使用 mochachai 测试 Nodejs 服务器。 如果键不存在,一个访问数据库的函数将抛出。为什么把它放在 expect 下这样:

expect(db.getReferenceData("not-existent")).to.throw();

失败?相反,将它放在另一个函数中有效:

expect(function() {
    db.getReferenceData("not-existent");
}).to.throw();

文档中的示例似乎暗示第一次调用是正确的,至少对我而言。

感谢您的帮助! 马里奥

在您的第一个示例中,在调用 expect() 之前抛出异常。您需要推迟 db.getReferenceData 的执行,以允许 expect 捕获异常。