- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
哇,好乱啊。这是场景。
用于 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/
测试函数的名称有没有限制? 当我将下面的代码写成testA()和testB()时,它们都会被执行。 AjaxCreateTest = TestCase("AjaxCreateTest"); Ajax
有谁知道 JsTestdriver 的 setUp 和 tearDown 函数/方法的语法?在他们的网站上,他们声称能够定义它,但我无法正确定义。 谢谢。 最佳答案 我下载代码并搜索“setUp”并发
我一直在评估 JSTestDriver,它似乎运行良好。我想在持续集成环境中使用它,我想知道多个项目是否可以同时针对同一个 JSTestDriver 服务器进行测试。 所以我的配置是我有 1 个 JS
我遇到了一个奇怪的问题,声称 $ 不是函数/未定义。显然,这意味着它认为 JQuery 没有定义,但如果我查看页面的源代码并检查请求,JQuery 肯定会被拉取。 Total 0 tests (Pas
我刚刚开始使用 JsTestDriver,我创建了非常简单的演示代码来看看我是否正确配置了我的环境。然而,大约 40-50% 的情况下,当 Firefox 启动(通过 JsTestDriver)时,我
我正在尝试使用 JSTestDriver 将 Hudson 作为持续集成后端来自动化我的 Javascript 测试。我的目标是让 Hudson 至少生成一份关于测试结果的报告,最理想的结果是在失败的
测试对象中事件处理的最佳方法是什么?我似乎无法弄清楚这一点。 我有一个对象,它设置了一些事件监听器,当它观察到这些事件被触发时,它会更改页面上的一个 dom 对象。当我进行多项测试时,下面示例中的最后
我在 JS 中使用 JsTestDriver 进行单元测试。我的代码的一部分使用确认框来允许用户确认或取消决定。 如何在 JsTestDriver 范围内自动测试此确认框的确认和取消选择 最佳答案 您
我正在从事一个 Javascript 变得越来越复杂的项目,需要将其作为我们自动化构建的一部分进行测试。 现在我得到了如下所示的项目结构: - root |- build.xml |- tools
有没有办法在 headless 状态下使用 jsTestDriver,它加载浏览器但 headless 地加载(您看不到浏览器)或最小化加载浏览器? 最佳答案 您可以将 PhantomJS 与 JST
我正在通过编写一个简单的 JavaScript 游戏来学习谷歌关闭工具。我在弄清楚如何设置 jsTestDriver 以使其与闭包库配合良好时遇到了麻烦。 具体来说:我想使用 goog.require
如何使用 jstestdriver 生成 javascript 测试覆盖率? 我能够使用 jstestdriver 运行 javascript 测试。我想生成一个覆盖率报告来检查我测试过的 javas
目前我正在研究使用 CoffeeScript 和 JsTestDriver 的 TDD,但是我被 JsTestDriver 抛出的 ReferenceError 困住了。 一些信息: 使用 Intel
我继承了一个遗留的 JavaScript 库,简单地编写为如下函数列表: function checkSubtree(targetList, objId) { ... } function c
使用 QUnitAdaptor 来测试我的 QUnit 测试,它实际上通过了一个本应失败的测试: test("very simple test", function() { var somevar =
我有深厚的 C# 背景,目前正在通过使用 Knockout.js 和 JavaScript 学习 ASP.NET MVC。我是一个非常注重 TDD 的人,并且遇到了一些我似乎正在努力解决的障碍。我已经
哇,好乱啊。这是场景。 主干驱动的 JS 应用。 用于 AMD 功能的 RequireJS,初始化如下: 然后在 main.js 中添加以下配置代码: require.config( { p
我已经按照 this Link 在 Netbeans 上使用 JS 测试驱动程序设置了 JavaScript 单元测试.但是,与该教程中的结果不同,断言失败后不再执行测试。我怎样才能改变这种行为? 例
经过大量搜索和相当多的试验,在我看来,所选择的组合工具只是没有它。我很乐意被误会。 嗯,技术栈如标题所说。要扩展, 所有“类”的 Backbone RequireJS 加载和管理 Backbone 实
我编写了多个规范文件,用于对网页上的各个模块进行单元测试。如果我单独运行它们,一次运行一个,它们就可以正常工作。但是,当我尝试按顺序运行所有文件时,只有 spec 文件夹中的第一个文件有效,而所有其他
我是一名优秀的程序员,十分优秀!