由于測試中兼容性的考慮不足,導致JS在一定內核瀏覽器下沖突無效,嚴重的外網事故。。。。
雖然現在很多公司注重了代碼的Xunit測試,但對于展現層的Javascript,JQUERY等代碼的測試仍然不是很多,這里將對JS方面的測試及兼容性測試,性能測試留下點Memory。
JS的Xunit框架現在有很多,jsunit,Qunit,YUITest。
考量了我們選用Qunit+Qmock的框架進行JS單元測試自動化。
Qunit的特點:
支持異步的ajax測試
支持區分module的測試
支持測試時間輸出
Qmock的加入更好的配合了Qunit的測試
Qunit的判斷類:
ok(state, message) – 布爾型斷言,message是專門顯示在QUnit界面上,用來區分不同的斷言的
equals(actual, expected, message) – 相等斷言,actual和expected的值相等時才能通過。
same(actual, expected, message) – 完全相等斷言,和equals的區別在于它會比較子元素,對于數組和一些自定義對象的比較十分有用。
raises( block, expected, message ) – 判斷錯誤返回
Qunit的實現類:
expect(amount) – 指定某個函數中會有多少個斷言,通常寫在測試函數開頭。
module(name) – 模塊是測試函數的集合,使用該函數可以在UI中將測試函數按模塊歸類。
asyncTest( name, expected, test ) – 異步ajax測試使用
異步與Ajax
對于異步程序的測試,如setTimeout、setInterval、Ajax等情況,按照上面的方法,在異步調用執行之前,測試就已完成并輸出了結果。
這時,配合使用QUnit提供的兩個函數:stop( [timeout] ) 和 start(),也可以輕松搞定。
//Ajax測試
function ajax(successCallback) {
$.ajax({
url: ‘XXXX.php’,
success: successCallback
});
}
test(‘asynchronous test’, function() {
// 暫停測試
stop();
ajax(function() {
// 異步調用判斷
})
setTimeout(function() {
//異步測試完成后,恢復
start();
}, 2000);
})
現在WEB2.0JS測試越來越重要了,在即將來臨的webGL時代尤為重要,得惡補JS了原文轉自:http://www.anti-gravitydesign.com