2014-02-06 198 views
0

我有一個HTML數據元素的裏面的一些JSON數據:在QUnit中測試SyntaxError異常的最佳方法是什麼?

<div id="ps-data" data-ps=" 
     { 
      "teacherId": 12345678 
     }, 
"></div> 

我使用jQuery的parseJSON功能解析它,但如果我將它傳遞無效的JSON,我得到一個SyntaxError異常。在QUnit中,這顯示爲全局失敗,但我希望它在我的一個測試用例中失敗。最好的方法是什麼?

我解析的代碼如下所示:

$.parseJSON($('#ps-data').data().ps); 
+0

您可以使用'try catch'語句 –

+0

我想我的問題是:我如何測試沒有異常被拋出? –

回答

1

你可以做這樣的事情:

var exeptionReached = false; 
try { 
    $.parseJSON($('#ps-data').data().ps); 
} catch(e) { 
    exceptionReached = true; 
} 
console.log(exceptionReached); //will be true if `parseJSON()` threw an exception 

使用qunit斷言例外達到...或者你可以從異常對象保存的東西如果你想承擔一些具體的事情,例如:

var ex; 
try { 
    $.parseJSON($('#ps-data').data().ps); 
} catch(e) { 
    ex = e; 
} 
console.log(ex.message); // something like "Unexpected token ," 

你會想要在訪問屬性之前檢查ex是否已定義。我認爲您應該能夠看到如何測試是否發生異常以及如何測試關於該異常的具體信息,但是如果您有任何其他問題,請告訴我。

JSFiddle example

0

下面是我根據smerny的答案是我做完整的例子。

function testParse() { 
    var exceptionMsg; 
    try { 
     var data = $j.parseJSON($j('#ps-data').data().ps); 
    } catch (e) { 
     exceptionMsg = e.message; 
    } 
    return exceptionMsg; 
} 

strictEqual(testParse(), undefined, 'ps data parses with no exceptions'); 

這會告訴我當它失敗時的異常消息。

相關問題