2017-10-16 78 views
0

我需要調用expect().to.throw()上的一個帶參數的函數。例如,假設我有以下幾點:node:使用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(),我會得到AssertionError: expected undefined to be a function。該函數被調用並且返回值被傳遞給expect

如何使用expect().to.throw()並給出包含的函數參數。是唯一的方法來做到這一點與匿名功能,如expect(() => {func(2)}).to.throw()

回答

1

這是從柴docs

如果您需要斷言你的函數fn時通過一定的參數拋出,然後換一個調用另一個函數的內部新生力量。

expect(function() { fn(42); }).to.throw(); // Function expression 
expect(() => fn(42)).to.throw();    // ES6 arrow function 
+2

'bind()的'也是一個不錯的選擇:'希望(fn.bind(NULL,42))to.throw()' –