Mocha Chai - using 'expect' and want to catch a 'RangeError: Maximum call stack size exceeded' error

Mocha Chai - using 'expect' and want to catch a 'RangeError: Maximum call stack size exceeded' error

我正在使用 Mocha and Chai 作为 Javascript 测试套件。

我想在我的一项测试中发现 'RangeError: Maximum call stack size exceeded' 失败。

JS

function isEven(num){
   if (num === 0) {
      return true;
   } else if (num === 1) {
      return false;
   } else {
      return isEven(num - 2);
  }
}

// Example Call
isEven(-10); //Throws the error 'call stack'

我一直在使用 .throw 但没有成功

expect(isEven(-1)).to.throw(ReferenceError, 'RangeError: Maximum call stack size exceeded');

expect(isEven(-1)).to.throw(err);

两者都没有成功。

我在终端中收到以下错误

npm ERR! Test failed.  See above for more details.

以上详情显示RangeError: Maximum call stack size exceeded

非常感谢任何帮助

expect(...).to.throw() 需要一个函数(因此 Chai 可以 运行 该函数并捕获任何错误)。您正在将函数的结果传递给它(或至少尝试这样做)。

试试这个:

expect(isEven.bind(null, -10)).to.throw(RangeError);

这有点类似于:

function toTest() {
  isEven(-10);
}
expect(toTest).to.throw(RangeError);