柴:如何检查异常属性
Chai: how can I check exception properties
考虑下面的一段代码:
var expect = require('chai').expect;
parse = function() {
throw {error: 'PROTOCOL_ERROR'}
}
describe('parser', function() {
it('throw error on unfinished command', function() {
try {
parse("*2'r'n$4'r'necho'r'n$11'r'nhel")
} catch (e) {
expect(e).to.equal({error: 'PROTOCOL_ERROR'})
}
})
});
有没有办法避免代码中的这个try...catch
样板?柴有"抛出"方法,但它只提供instanceof
检查
我找到了这个答案:
var expect = require('chai').expect;
parse = function() {
throw {error: 'PROTOCOL_ERROR'}
}
describe('parser', function() {
it('throw error on unfinished command', function() {
expect(
() => parse("*2'r'n$4'r'necho'r'n$11'r'nhel")
).to.throw().which.has.property('error', 'PROTOCOL_ERROR');
})
});
首先,你应该抛出一个Error
的实例或扩展Error
parse = function() {
throw new Error('PROTOCOL_ERROR');
}
然后chai
有一个方法来断言函数正在抛出错误http://chaijs.com/api/bdd/#method_throw
所以最后的事情应该是这样的:
var expect = require('chai').expect;
parse = function() {
throw new Error('PROTOCOL_ERROR');
}
describe('parser', function() {
it('throw error on unfinished command', function() {
expect(function() { parse("*2'r'n$4'r'necho'r'n$11'r'nhel") }).to.throw(Error, 'PROTOCOL_ERROR');
})
});
编辑:函数中包装的函数调用。否则,在调用期望之前会抛出错误,并有机会捕获它。
相关文章:
- 为什么不't Javascript对我的输入值进行了一些重新检查
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 如何检查管道中未定义的项目
- 主干-不管怎样,检查事件以前是否绑定过
- 使用javascript检查多个输入值,并在1次检查中标记多个输入框
- 递归使用 eval() 是检查程序执行的好方法吗?
- 检查onsubmit doenst work jquery contactform上的函数
- JavaScript 检查隐藏字段中的值并将其设置为隐藏字段值
- API密钥使用和检查示例
- 如何让程序检查所选单词中是否有按键
- 柴:如何检查异常属性
- 在javascript数组中检查null时出现异常行为
- 流星发布异常:在使用 aldeed:tabular 时,在发布过程中没有检查() 所有参数
- Prototype构造函数上下文中的JavaScript类型检查和异常
- 使用selenium检查javascript异常
- JavaScript.检查了单选按钮的异常行为
- 为什么当所有参数似乎都已检查时,audit-argument-checks会引发异常?
- 检查自定义异常
- Angular2异常处理程序-检查错误对象是否为响应
- 如何检查JavaScript中的特定异常