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);
我正在使用 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);