gpt4 book ai didi

javascript - Jasmine + JSTestDriver + 覆盖率 + RequireJS

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:06 27 4
gpt4 key购买 nike

哇,好乱啊。这是场景。

  • 主干驱动的 JS 应用。
  • 用于 AMD 功能的 RequireJS,初始化如下:

    <script data-main="js/main" src="js/require.js" type="text/javascript"></script>

    然后在 main.js 中添加以下配置代码:

    require.config(
    {
    paths:
    {
    ... : ...
    }
    });

    每个 Backbone View/Model/Router 都是一个“define(...)”模块,在 main.js 中调用一次“require("theOneRouter", ...)”。

  • r.js 用作 Uglify/Closure 的优化器。在我的 .net 框架中动态选择的 ./release 子文件夹中创建了一个“已编译”的 main.js。

  • 花了很长时间才让 Backbone + Require.JS 工作,但现在工作得很好!

  • 然后在上面添加 Jasmine 也需要一些定制工作,但效果很好。我必须从我的 SpecRunner.html 加载 require.js,使用 require 的 define(...) 调用将每个测试模块定义为 AMD,然后我从调用 require 的 require(...) 调用一次实例化并运行 Jasmine在 SpecRunner.html 中:

    require(
    [
    //"test/specs/testSpec1",
    "test/specs/views"
    ],
    function ()
    {
    jasmine.getEnv().updateInterval = 1000;
    var reporter = new jasmine.TrivialReporter();
    jasmine.getEnv().addReporter(reporter);
    ....
    ....
    });

    这也很好用。测试加载和运行,没有问题。 Require 会处理所有事情。

现在,我想要一个像 JSTestDriver 这样的框架来充当我的运行者。我选择 JSTD 是因为它简单、能够在远程浏览器上进行测试、代码覆盖支持,但我仍然愿意接受其他建议。

JSTestDriver 本身工作正常,我遇到的唯一问题是一起运行 JSTD + Jasmine + ReuireJS 组合。最大的问题是,如果我在配置文件中告诉 JSTD 关于 Jasmine/Require 测试模块以便加载它,我会收到以下错误:

http://requirejs.org/docs/errors.html#mismatch

如果我使用 r.js 将我的所有代码优化到一个 main.js 中,组合会起作用,包括覆盖率,但覆盖率是在一个巨大的文件中收集的,很难分析。更不用说检测一个 5 万行代码的 js 文件并通过 JSTD 运行它需要很长时间。

我尝试创建一个类似夹具的 js 文件来加载我所有的 Jasmine 测试模块和代码模块,但我一直返回到上面的“不匹配”错误,并且,如果我不单独告诉 JSTD 每个模块(通过加载一个执行实际加载的 html/js fixture)它们不会被检测代码覆盖率。

有没有人让这个特定的组合起作用?也许我要求太多...

最佳答案

解决方案与 devadvocate 提到的完全一样。因为 JsTestDriver 和 Require.js 正在竞争管理文件/依赖项的加载,所以当您尝试 100% 以 Require.js 方式(使用匿名模块和定义)执行此操作时,JsTestDriver 会适得其反。相反,您必须命名模块并使用 require([...], function(...) {... 而不是 define([...]。我写了一篇文章来展示如何集成 QUnit、Requirejs、和 JSTD 的代码覆盖率:js-test-driver+qunit+coverage+requirejs。我在我的例子中使用 QUnit,但你可以很容易地用 QUnit 代替 Jasmine。在试图解决这个问题时,我考虑过只使用 PhantomJS,但对于我们的用户群来说,我们必须交叉-浏览器测试,IE7、IE8、IE9 等,因此单个 WebKit 无法解决问题。JsTestDriver 非常有用,但恐怕糟糕的文档会使开发人员望而却步。很快我就会为我的示例获取代码在 GitHub 上。希望这有帮助。

关于javascript - Jasmine + JSTestDriver + 覆盖率 + RequireJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10745126/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com