测试互斥的JavaScript

时间:2011-06-15 04:19:01

标签: javascript unit-testing

我正在开发一个包含不同JavaScript文件的Web应用程序,具体取决于我在应用程序中的位置。例如,我为每个页面都有一个display.js,每个页面都有一个“init()”函数,只要加载页面就会调用它。

这适用于webapp,但在我的QUnit测试中,所有脚本文件都包含在单个index.html中,相同名称的函数会相互覆盖。

如何最好地处理这些问题?每页一个测试index.html文件会创建许多样板代码,并使执行所有测试用例变得非常简单。这就是为什么我决定区别地命名每一个功能,例如“initFrontPage()”而不是“init()”。然而,这使得应用程序代码有点奇怪:我不仅要包含正确的文件,还必须在其中调用正确的函数。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

解决方案是使用名称空间:

在foo / display.js中:

window.foo = {};
foo.init = function () { ... };

在bar / display.js中:

window.bar = {};
bar.init = function () { ... };

然后,在使用bar / display.js的init方法的页面中:

(function (display) {
    display.init();
}(bar));

将display.js代码包装在IIFE中也是一个好主意。