首页 > web前端 > js教程 > 为什么 `expect.to.throw` 无法捕获 Chai 中抛出的错误?

为什么 `expect.to.throw` 无法捕获 Chai 中抛出的错误?

DDD
发布: 2024-11-27 09:09:10
原创
334 人浏览过

Why Does `expect.to.throw` Fail to Catch Thrown Errors in Chai?

Mocha / Chai Expect.to.throw:了解它是如何工作的

在测试中,确保按预期抛出错误至关重要。然而,用户经常遇到 Chai 的expect.to.throw 的挑战,无法正确捕获抛出的错误。让我们深入研究一下为什么会出现这种情况以及如何解决。

直接将函数调用的结果传递给expect.to.throw 时就会出现问题。例如,expect(model.get('z')).to.throw(...)。在这种情况下,您对 model.get('z') 的返回值进行断言,而不是实际抛出错误。

要解决此问题,您需要传递一个等待调用的函数期待。然后,该函数将使用适当的参数调用 model.get。考虑以下代码:

expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');
登录后复制

这里,model.get.bind(model, 'z') 创建一个新函数,在调用时,使用 'z' 参数调用 model.get,解决问题。

理解这种行为对于有效使用expect.to.throw 至关重要。请记住传递会引发预期错误的函数,确保错误处理场景的准确测试。

以上是为什么 `expect.to.throw` 无法捕获 Chai 中抛出的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板