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);
});
在正常测试运行中,这将是一个有效的结果。用 noglobals (http://jquery-cookbook.com/examples/18/06-keeping-tests-atomic/globals.html?noglobals)标志运行同样的测试会导致测试失败,因为QUnit发现代码污染了窗口对象。
没有必要总是使用这个标志,但是它对于检测全局命名空间污染来说很方便,这种污染在组合使用第三方程序库时将会成为问题。这个标记还有助于检测测试中副作用引起的缺陷。