2011-05-06 148 views
10

所以QUnit提供了「raise」斷言來測試是否拋出異常。雖然有什麼方法可以測試異常拋出的實際消息嗎?例如,假設我有這樣的功能:qunit - 測試異常消息?

throwError = function(arg) { 
    var err = new Error(); 
    if (typeof arg === 'undefined') { 
    err.message = 'missing parameter'; 
    throw err; 
    } 
} 

我希望能寫幾行內容:

raises(
    function(){throwError();}, 
    Error.message, 
    'missing arg' 
); 

理想的情況下,本次測試將失敗,因爲異常消息是「缺參數「,我期望它是」缺少參數「,但它通過,因爲qunit只檢查是否引發錯誤。任何方式來檢查拋出的異常的實際內容?

+0

是不是QUnit的[罰球(http://api.qunitjs.com/throws/)這樣做? – 2013-02-27 12:48:17

+0

_throws_ work,但由於某種原因,它不會驗證異常消息。 – 2013-07-16 18:28:30

回答

18

我想出了答案,在這裏發佈,以防其他人發現它有用。鑑於這一功能:

throwError = function(arg) { 
    var err = new Error(); 
    if (typeof arg === 'undefined') { 
    err.message = 'missing parameter'; 
    throw err; 
    } 
} 

測試應該是這樣的:

raises(
    function(){ 
    throwError(); 
    }, 
    function(err) { 
    return err.message === 'missing arg'; 
    }, 
    'optional - label for output here' 
); 
+0

是的,它像一個魅力! – ducin 2013-08-07 17:31:31

+0

是的,我獨立發現了這一個 - 據我所知,這是一個無證的功能 – 2014-11-13 18:54:02