由于测试中兼容性的考虑不足,导致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了