问题标签 [js-test-driver]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
878 浏览

jasmine - 在 Sublime Text 2 中使用 jsTestDriver 和 Jasmine

有没有办法在编写 JavaScript 时将 Sublime Text 2 配置为使用 Jasmine 和 jsTestDriver?

0 投票
1 回答
774 浏览

javascript - 编写可测试的 JavaScript 代码

我开始深入研究 JavaScript 的一些工作,并且试图了解我应该如何编写可测试的 JS 代码。我的背景主要是 Java,我很熟悉,但我没有 JavaScript 经验。经过一番阅读,我打算使用 js-test-driver 作为我的单元测试框架,但我也愿意接受这里的建议。在 Java 中,我的方法一直是将事物分解为接受某些内容并返回某些内容的小方法……在 JavaScript 中,我想我会采取类似的方法,将任何 DOM 操作和实际逻辑分离为 2 个单独的函数。例如:

因此,任何业务逻辑都可以轻松测试。

我是在正确的轨道上还是有更好的方法来做事?关于这个主题的任何推荐阅读是 JS 特定的?感谢您的任何想法

0 投票
1 回答
3452 浏览

javascript - 与 Jasmine 内置的 Spys 相比,使用 Sinon.js 有什么优势?

我正在拼凑一个 jsTestDriver/Jasmine 环境来测试我们的前端代码,并且我看到很多对 Sinon.js 的引用,用于独立(或插入)间谍。有人能描述一下 Sinon.js 带来了什么 Jasmine 没有用于测试 UI 的东西吗?

0 投票
3 回答
764 浏览

backbone.js - 我是 jasmine-sinon 的 TDD 骨干新手。主干单元测试中的更改事件

我正在测试主干中选择框视图的事件更改,该视图“应该在更改时提供到 router.navigate 的正确路径”。这是场景,如果我在下拉列表中选择一个值,它应该重定向到正确的 url。

这是测试(campaign.test.js):

这是模块(campaign.js):

在我的测试中,我创建了一个新的 OPTION 元素,然后设置了一个选中属性的值。

如何将其作为更改事件的 currentTarget 传递并将其发送到 trigger()?

或者有没有更简单的方法来做到这一点?

我得到这个测试失败。错误:预期函数已使用“campaign/test_campaign”调用,true。

0 投票
1 回答
673 浏览

requirejs - 是否可以运行使用 requirejs 模块的 js-test-driver 测试?

我一直在尝试同时使用requirejsjs-test-driver,但我看不到它可以正常工作。

我在根目录有这样的最小配置:

“src/main/js/greeter.js”文件定义了一个愚蠢的模块:

我试图让 require 在 "src/test/js/greeterTest.js" 中加载欢迎模块:

每当我运行它时,我都会收到一个错误,因为在创建 Greeter 时未定义 myapp。

那么有没有办法在这种情况下配置 require ?我试过 :

  • 将 baseUrl 属性设置为类似 file:///.... 以提供文件的位置
  • 使用网关配置来代理 requirejs 可能执行的请求(尽管我没有运行服务器来提供 js 文件,所以我不得不再次使用 file:///)

还有什么我应该尝试的吗?

谢谢

0 投票
1 回答
1835 浏览

requirejs - 使用 JsTestDriver + RequireJS + QUnit 进行测试

经过大量搜索和相当多的试验,在我看来,所选的工具组合只是没有它。我很想弄错。

好吧,技术堆栈如标题中所述。扩大,

  1. 所有“类”的骨干
  2. RequireJS 加载和管理 Backbone 实体之间的依赖关系
  3. QUnit(测试也是 RequireJS 模块)
  4. 用于命令行自动化的 JsTestDriver

设置和代码片段

jsTestDriver.conf

测试.js

服务器启动命令(来自 JSTD JAR 所在的同一目录)

测试运行命令(来自 JSTD JAR 所在的同一目录)

什么有效?

第一个是同步测试。

什么不起作用?

第二,异步测试不起作用并超时。

错误

铬控制台

安慰

笔记

我确实从这里下载了最新的 QUnit 适配器。我还尝试了一堆其他的,据说可以工作的适配器,但无济于事。

问题

这甚至可能吗?如果是这样,有人会那么好心地阐明这个问题吗?

谢谢你。

更新(08.04.14)

业力。就这些。

0 投票
1 回答
543 浏览

static - js-test-driver 不提供静态文件

我正在使用 js-test-driver 运行一些测试,并想针对 html 文档测试一些代码。我希望将其加载到 iframe 中的当前文档中并针对它测试我的代码,但我什至无法获取文件。

我的目录结构是:

  • simpleJsTestDriver
    • aFile.html
    • aTest.js
    • jsTestDriver.conf
    • jsTestDriver.jar
    • 一些代码.js

文件.html

jsTestDriver.conf

运行java -jar JsTestDriver.jar --port 9876 --runnerMode=DEBUG 并导航到http://localhost:9876/aFile.html给出:

我正在使用最新版本的 js-test-driver (1.3.4.b),因为 1.3.4.a 似乎存在不提供静态文件的问题。我知道服务器发现文件没问题,因为更改 conf 文件中的名称会aFi.html引发错误:

0 投票
1 回答
1727 浏览

javascript - 使用 JsTestDriver 的 basePath 指定从哪里加载夹具数据

我正在尝试将 HTML 夹具数据加载到 JsTestDriver 测试环境中。当jsTestDriver.conf文件位于工作目录的顶层时,我可以让它工作,但如果我把它放在子目录中并尝试使用basePathJsTestDriver 的功能,我就无法让它工作。有没有人让这个工作?如果是这样,我做错了什么?

首先是有效的目录结构:

jsTestDriver.conf 如下所示:

server.sh 和 test.sh 分别调用 server 和 test-runner:

服务器.sh:

测试.sh

我在 dom.fixture.test.js 代码中加载夹具,如下所示:

这成功地返回了 fix.html 中的 html,然后我必须将其加载到 DOM 中。

但是,当我将 jsTestDriver.conf 文件推送到 conf 目录时,我似乎无法让 JsTestDriver 中的嵌入式码头服务器在不使用绝对路径 ( /test//$HOME/javascript/jstd/fixtures/fix.html) 的情况下找到 fix.html 文件,尽管尝试了许多变化。默认情况下,JSTD 假定/testJetty 的根与您放置 jsTestDriver.conf 文件的位置相关。据说,设置basePath应该允许你改变它。

这是一次失败的尝试:

目录结构是相同的,除了 jsTestDriver.conf 在一个 conf 目录中:

jsTestDriver.conf 中的路径都被调整为一个目录:

server.sh 和 test.sh 有两个额外的命令行开关:

其余的都是一样的。

错误是:

我已经尝试过 1.3.5 和 1.3.4.b 版本。结果相同。感谢任何可以帮助解决这个谜团的人。

0 投票
2 回答
288 浏览

javascript - 升级到 1.3.5 后 JsTestDriver 测试中断

从 1.3.4 升级到版本 1.3.5 后,引用未定义的变量会导致测试失败。任何建议如何禁用此行为?我认为它与 js 严格模式有关,它默认启用此功能,但无法找到禁用它的方法

JsTestDriver.conf 文件的一部分:

程序.js:

对话框.js:

错误信息:ReferenceError: Program is not defined

0 投票
1 回答
383 浏览

testing - JS测试驱动中测试用例的异步执行

我们有 CI 构建服务器,其中不同的 JS 测试用例将在 JS 测试驱动程序服务器的同一实例上并行(异步)执行。测试用例相互独立,不应相互干扰。这可能使用JS测试驱动程序吗?

目前,我已经编写了两个测试用例,只是为了检查这是否可能:

测试用例 1:

测试用例2:

我在测试用例 1 中添加了 alert 语句,以确保它挂在那里。

我已经使用以下命令启动了 JS 测试驱动服务器:

我开始执行两个测试用例,如下所示:

测试用例 1 在 alert 语句处执行并挂起。测试用例 2 失败并出现异常 (BrowserPanicException)。conf 文件是正确的,因为第二个测试用例如果自行执行则通过。

在第一个测试用例仍在执行时,是否需要进行任何配置更改才能使第二个测试用例通过?