首页  >  文章  >  web前端  >  为什么 Mocha/Chai 测试中 `expect.to.throw` 无法捕获抛出的错误?

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

Linda Hamilton
Linda Hamilton原创
2024-11-17 11:53:01796浏览

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

Mocha / Chai Expect.to.throw 无法捕获抛出的错误?

在您的 Node.js 测试中,您在使用 Chai 的 Expect.to 时遇到了困难.throw 检测抛出的错误。测试始终失败,报告抛出的错误。但是,如果将测试封装在 try-catch 块中并对捕获的错误进行断言,则测试会通过。

expect.to.throw 是否未按预期运行?

要解决此问题,您需要传递一个期望的函数,而不是函数调用的结果:

expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');
expect(model.get.bind(model, 'z')).to.throw(new Error('Property does not exist in model schema.'));

在您原来的方法中,您正在将调用 model.get('z') 的结果传递给预期。要测试函数是否抛出错误,您必须提供一个函数供expect调用自身。 bind 方法创建一个新函数,调用该函数时,会使用预期的参数调用 model.get。

请参阅提供的文档以进一步了解绑定方法。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn