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中文网其他相关文章!