当前位置: 首页 > 知识库问答 >
问题:

Jasmine JSTestDriver覆盖要求JS

靳富
2023-03-14

哇,真是一团糟。这是一个场景。

>

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

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

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

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

    每个骨干视图/模型/路由器都是一个“定义(...)”模块,并且“需要(“theOneRout”,...)”在main.js.

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

    花了很长时间才得到骨干要求。JS开始工作,但现在工作很好!

    然后在上面涂上茉莉花也需要一些定制工作,但效果很好。我必须加载要求。js来自我的SpecRunner。html,使用require的define(…)调用将每个测试模块定义为AMD,然后我实例化

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

    这也很管用测试加载

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

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

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

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

    我尝试创建一个类似fixture的js文件来加载我所有的Jasmine测试模块

    有人把这个特定的组合发挥作用了吗?也许我要求太多了...

  • 共有3个答案

    慕河
    2023-03-14

    您是否尝试过在测试中使用require而不是define来命名测试中的模块?

    https://github.com/podefr/jasmine-reqjs-jstd

    编辑:

    我刚刚发布了一个开源工具包,希望它能像帮助我一样帮助他人。它是许多开源工具的组合,为您提供了一个开箱即用的requirejs主干应用程序

    它提供了单个命令来运行:dev web server、jasmine单浏览器测试运行程序、jasmine js-test-driver多浏览器测试运行程序,以及JavaScript和CSS的级联/缩小。它还输出应用程序的非统一版本用于生产调试,预编译你的车把模板,并支持国际化。不需要设置。它只是工作。

    它还支持正在测试的未命名模块。

    http://github.com/davidjnelson/agilejs

    李跃
    2023-03-14

    我无法让它工作,最终使用PhantomJS来运行我的茉莉花测试。http://phantomjs.org/

    施学
    2023-03-14

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

     类似资料:
    • 问题内容: 我创建了一个自定义样式表,该样式表将覆盖Wordpress模板的原始CSS。但是,在我的日历页面上,原始CSS具有声明的每个表格单元格的高度: 有什么办法可以覆盖这个吗? 问题答案: 覆盖!important修饰符 只需使用添加另一个CSS规则,并赋予选择器更高的特异性(向选择器添加其他标签,id或类) 在比现有选择器晚的位置添加具有相同选择器的CSS规则(平局中,最后一个定义的获胜者

    • 问题内容: 好的,我从很多地方和来源都听说过,每当我覆盖equals()方法时,我也需要覆盖hashCode()方法。但是请考虑以下代码 这里的输出为true,完全按照我想要的方式为false,我根本不关心重写hashCode()方法。这意味着hashCode()覆盖是一种选择,而不是每个人都说的强制性选择。 我想要第二次确认。 问题答案: 它对您有用,因为您的代码未使用任何需要API的功能(Ha

    • 我是一名Java新手,在可比接口中重写compareTo方法时遇到了一些问题。我的代码创建了一个HashMap,将字符串与int关联起来。我希望重写compareTo,以便ArrayList键中的字符串根据其HashMap值排序,而不是按字母顺序排序。然而,在这种实现下,字符串仍然按字母顺序排序。 哦,澄清一下,nameWeight是字符串和整数对的哈希映射。 有什么想法吗?

    • 问题内容: 我们很少有扩展基本类的类。我们注意到我们使用了“退出一些睡眠”方法,并且希望在发生睡眠时进行记录。有没有一种方法可以覆盖Thread.sleep方法,在其中我可以添加一些自定义逻辑(即记录),然后仅调用实际的Thread.sleep()?这样,我就不必更改在我的基类中使用Thread.sleep的所有位置。我也愿意接受其他选择。 问题答案: 您不能重写方法,因为它是本机方法,所以无法对

    • 我正在开发一个Spring集成/引导应用程序。我正在使用一个多文档(src/main/Resources/application.yml)来设置几个配置类的默认值(用@ConfigurationProperties注释)。pplicaiton.yml带有默认值,其中一些需要被覆盖,具体取决于环境。 我可以在目录中使用Java系统属性(-D...=...)、Spring“属性”(--...=...)

    • 问题内容: 我试图在php中覆盖我的位置,但是我仍然在php.ini文件中获得了2 mb的值。 问题答案: 通过进行设置时,这些设置不会有任何效果。 原因是PHP 在 执行脚本 之前 需要这些值。上载时,将在完成上载后执行目标脚本,因此PHP需要事先知道最大大小。 在,虚拟主机配置或文件中进行设置。一个典型的文件如下所示: