摩卡柴 - 使用'期待'并希望捕获一个' RangeError:超出最大调用堆栈大小'错误

时间:2017-04-28 18:04:16

标签: javascript unit-testing mocha bdd chai

我使用MochaChai作为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

任何帮助非常感谢

1 个答案:

答案 0 :(得分:1)

expect(...).to.throw()需要一个函数(因此Chai可以运行该函数并捕获任何错误)。你传递了一个函数的结果(或至少试图)。

试试这个:

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

与此类似:

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