当前位置:嗨网首页>书籍在线阅读

25-讨论

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

18.6.3 讨论

除了 #main 夹具元素,QUnit还自行清理jQuery属性 $.event.global$.ajaxSettings 。任何全局事件(如 $().ajaxStart() )都由jQuery在 $.event.global 中管理——如果测试绑定了许多这类事件,在运行多项测试时它们将明显降低运行器的速度。通过清理这些属性,QUnit确保测试不会受到全局事件的影响。

上述原则对于 $.ajaxSettings 也适用, $.ajaxSettings 通常用来通过 $.ajaxSetup()$.ajax() 调用配置常见属性。

除了秘诀18.8介绍的过滤器之外,QUnit还提供一个 ?noglobals 标记。考虑如下的测试:

test("global pollution", function(){
   window.pollute = true;
   same(pollute, true);
});

在正常测试运行中,这将是一个有效的结果。用 noglobalshttp://jquery-cookbook.com/examples/18/06-keeping-tests-atomic/globals.html?noglobals)标志运行同样的测试会导致测试失败,因为QUnit发现代码污染了窗口对象。

没有必要总是使用这个标志,但是它对于检测全局命名空间污染来说很方便,这种污染在组合使用第三方程序库时将会成为问题。这个标记还有助于检测测试中副作用引起的缺陷。