Chai:解决 Node.js 中难以捉摸的 Expect.to.throw
Chai 的 Expect.to.throw 在 Node.js 中可能会令人困惑。 js测试。尽管其预期目的是断言抛出的错误,但当直接应用于代码片段时,它常常会失败。
理解问题:
考虑示例测试用例:
it('should throw an error if you try to get an undefined property', function (done) { // Passing the result of model.get('z') directly fails expect(model.get('z')).to.throw('Property does not exist in model schema.'); });
尽管实际上抛出了错误,但该测试失败了。一个常见的误解是expect.to.throw处理抛出错误的检索和断言。
解决方案:拥抱函数传递:
解决这个问题的关键问题在于将函数传递给expect.to.throw而不是结果。该函数将由expect执行,触发对抛出错误的检索和验证:
expect(model.get.bind(model, 'z')).to.throw('Property does not exist in model schema.');
在这段修改后的代码中,model.get绑定到模型对象的上下文,并设置了'z'作为其论点。然后,将生成的函数传递给expect.to.throw,确保捕获并断言预期的错误。
通过遵循这种方法,您可以利用 Node 中的expect.to.throw 的全部功能。 js 测试,有效断言抛出错误的发生并确保代码的健壮性。
以上是为什么 Node.js 测试中“expect.to.throw”无法断言抛出的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!