Javascript 如何使用chai和sinon测试一种方法重现现有错误
我们有一种方法,它将触发更高级别的潜在错误作为参数。我们想测试一下Javascript 如何使用chai和sinon测试一种方法重现现有错误,javascript,node.js,chai,sinon,Javascript,Node.js,Chai,Sinon,我们有一种方法,它将触发更高级别的潜在错误作为参数。我们想测试一下 handleFailure((msg, err) => { if (err) throw err // preserve stack console.error(msg); process.exit(1); }) 我们想测试,如果有错误,是否抛出了错误。我们试过这样做: it('should throw error', () => { let error = new Error('someErro
handleFailure((msg, err) => {
if (err) throw err // preserve stack
console.error(msg);
process.exit(1);
})
我们想测试,如果有错误,是否抛出了错误。我们试过这样做:
it('should throw error', () => {
let error = new Error('someError');
expect(handleFailure('some message', error)).to.throw(error);
});
错误被抛出,我可以在控制台中看到它。但它并没有被单元测试“捕获”:
1 failing
1) command processor
handleFailure method
should throw error:
Error: someError
at Context.it (tests/commandProcessor.spec.js:111:39)
我们如何使用sinon和chai测试抛出的错误?代码的问题是,expect从未调用,因为在从handleFailure返回之前抛出了错误 处理它的一种方法是将代码包装在一个匿名函数中,如下所示
it('should throw error', () => {
let error = new Error('someError');
expect(function(){handleFailure('some message', error)}).to.throw(error);
});
可能重复的