【问题标题】:Testing mutually exclusive JavaScript测试互斥 JavaScript
【发布时间】:2011-06-15 04:19:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript unit-testing


    【解决方案1】:

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

    在 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 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 2015-09-14
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      相关资源
      最近更新 更多