2015-11-20 52 views
1

我有拋出,像這樣的錯誤:檢查與should.js和摩卡一拋出新的錯誤

if (somethingBadHappened) { 
    throw new Error('what were you thinking, batman?') 
} 

現在我想編寫一個測試來檢查,這將引發預期時:

should(MyClass.methodThatShouldThrow()).throws('what were you thinking, batman?') 

但是,實際上會引發錯誤。我究竟做錯了什麼? Should.js文檔非常簡單,因爲它繼承自assert.throws,但即使這樣的文檔在'should.js'方法中也不起作用?

回答

5

正如您發現的那樣,您的代碼執行了引發錯誤的函數& should沒有得到它的機會。

要允許正確的斷言,您需要將函數調用包裝在一個匿名函數中。

should(function() {MyClass.methodThatShouldThrow();}).throw('what were you thinking, batman?') 
+0

HRM,確定除了我越來越'undefined是不是function' – brandonscript

+0

AH,'throw'不'throws'。 – brandonscript

+1

如果您使用的是es2015,那麼使用箭頭功能可以使其更緊湊 –