Javascript 节点:使用chai';s expect.to.throw打开一个接受参数的函数

Javascript 节点:使用chai';s expect.to.throw打开一个接受参数的函数,javascript,node.js,chai,Javascript,Node.js,Chai,我需要对接受参数的函数调用expect().to.throw()。例如,假设我有以下内容: var func = function(x) { if (x > 1) { throw new Error() } else { console.log('hello') } } expect(func).to.throw() 这会失败,因为它在没有参数的情况下调用func,这意味着它永远不会抛出错误。但是如果我调用expect(func(2)).to.throw(),

我需要对接受参数的函数调用
expect().to.throw()
。例如,假设我有以下内容:

var func = function(x) {
  if (x > 1) {
    throw new Error()
  } else {
    console.log('hello')
  }
}
expect(func).to.throw()
这会失败,因为它在没有参数的情况下调用
func
,这意味着它永远不会抛出错误。但是如果我调用
expect(func(2)).to.throw()
,我会得到
AssertionError:expected undefined成为一个函数。调用该函数并将返回值传递给
expect

如何使用
expect().to.throw()
并给出包含的函数参数。是使用匿名函数执行此操作的唯一方法,如
expect(()=>{func(2)}).to.throw()

这是来自chai的:

如果需要断言函数fn在传递某些参数时抛出,那么在另一个函数中封装对fn的调用

bind()
也是一个不错的选择:
expect(fn.bind(null,42)).to.throw()
expect(function () { fn(42); }).to.throw();  // Function expression
expect(() => fn(42)).to.throw();             // ES6 arrow function