当“new constructor()”与mocha和chai一起使用时,我如何断言throw
how can I assert throw when `new constructor()` with mocha and chai
如何正确投掷?对于同一个函数,throw和都可以通过测试
代码也可在jsfiddle上获得,https://jsfiddle.net/8t5bf261/
class Person {
constructor(age) {
if (Object.prototype.toString.call(age) !== '[object Number]') throw 'NOT A NUMBER'
this.age = age;
}
howold() {
console.log(this.age);
}
}
var should = chai.should();
mocha.setup('bdd');
describe('Person', function() {
it('should throw if input is not a number', function() {
(function() {
var p1 = new Person('sadf');
}).should.not.throw;
(function() {
var p2 = new Person('sdfa');
}).should.throw;
})
})
mocha.run();
<div id="mocha"></div>
<link href="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.4.5/mocha.css" rel="stylesheet" />
<script src="https://cdn.rawgit.com/jquery/jquery/2.1.4/dist/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/mocha/2.4.5/mocha.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/chai/3.5.0/chai.min.js"></script>
.throw
是一个函数。您应该调用它来进行实际断言。实际上,您只是得到了函数对象。
你可能想试试
(function() {
var p1 = new Person(1);
}).should.not.throw(/NOT A NUMBER/);
(function() {
var p2 = new Person('sdfa');
}).should.throw(/NOT A NUMBER/);
注意:BTW,请使用其中一个Error
构造函数来引发Error。扔其他东西通常是不受欢迎的。
相关文章:
- “createImageData()”和“new ImageData(()”有何不同
- 当已经使用CasperJS选择了css类元素时,断言该类的存在
- Chai深度包含了对嵌套对象的断言
- Mocha/Chai测试链接到函数返回断言错误
- 断言属性不可配置
- 节点回调参数无法断言instanceof Error
- 如何断言后端端点已被调用
- 断言错误:断言失败:坐标数组的长度应与步幅匹配
- Ractive.DEBUG背后的逻辑缩小了断言
- 未捕获的错误:断言失败:余烬视图需要 1.7 和 2.1 之间的 jQuery
- JavaScript 数组克隆相等断言中的远程行为
- 这与 $(document).ready() 有何不同
- $provide.decorator$controller return throw undefined不是angula
- 当“new constructor()”与mocha和chai一起使用时,我如何断言throw
- 断言使用new执行构造函数时抛出错误
- '递归到对象'13076断言在MongoDB中失败
- emberjs追加有效,但引发断言失败错误
- 不可变的Chai断言错误,而预期的结果等于
- 断言var集通过<输入ng模型>不是未定义的
- 断言一个元素是有重点的