Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用chai和sinon测试一种方法重现现有错误_Javascript_Node.js_Chai_Sinon - Fatal编程技术网

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);
});
可能重复的