我使用Mocha和Chai作为Javascript测试套件。
我想抓住一个' RangeError:超出最大调用堆栈大小'我的测试失败了。
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
任何帮助非常感谢
答案 0 :(得分:1)
expect(...).to.throw()
需要一个函数(因此Chai可以运行该函数并捕获任何错误)。你传递了一个函数的结果(或至少试图)。
试试这个:
expect(isEven.bind(null, -10)).to.throw(RangeError);
与此类似:
function toTest() {
isEven(-10);
}
expect(toTest).to.throw(RangeError);