Javascript 当'new constructor()'与mocha和chai一起使用时,如何断言throw

Javascript 当'new constructor()'与mocha和chai一起使用时,如何断言throw,javascript,class,ecmascript-6,chai,throw,Javascript,Class,Ecmascript 6,Chai,Throw,我怎样才能正确投掷?对于相同的功能,抛出和不抛出都可以通过测试 代码也可以在JSFIDLE上获得 班级人员{ 建造师(年龄){ 如果(Object.prototype.toString.call(age)!='[Object Number]')抛出“非数字” 这个。年龄=年龄; } 霍华德{ console.log(this.age); } } var-should=chai.should(); 摩卡咖啡设置(“bdd”); 描述('Person',function()){ 它('如果输入不是

我怎样才能正确投掷?对于相同的功能,抛出不抛出都可以通过测试

代码也可以在JSFIDLE上获得

班级人员{
建造师(年龄){
如果(Object.prototype.toString.call(age)!='[Object Number]')抛出“非数字”
这个。年龄=年龄;
}
霍华德{
console.log(this.age);
}
}
var-should=chai.should();
摩卡咖啡设置(“bdd”);
描述('Person',function()){
它('如果输入不是数字,则应抛出',函数(){
(功能(){
变量p1=新人(“sadf”);
})不应该扔;
(功能(){
变量p2=新员工(“sdfa”);
}).应该扔;
})
})
mocha.run()

。您应该调用它来执行实际的断言。实际上,您只是得到函数对象

你可能想试试

(function() {
  var p1 = new Person(1);
}).should.not.throw(/NOT A NUMBER/);

(function() {
  var p2 = new Person('sdfa');
}).should.throw(/NOT A NUMBER/);
注意:顺便说一句,使用
Error
构造函数之一抛出错误。抛掉其他东西通常是不赞成的。

你可能想考虑它是否有帮助: