问题标签 [qunit]

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 投票
1 回答
632 浏览

asp.net - 模拟/伪造 ASP.NET 服务引用和 QUnit 测试

我刚刚进入 QUnit 测试,并在我的第一页遇到了问题:S

我们使用 ASP.NET 服务引用来利用 html 页面上的异步数据加载,在同一个项目中创建对 Web 服务的引用。ASP.NET 在幕后所做的(ScriptManager 控件)是创建一个表示服务方法并处理所有 AJAX 调用的 JS 文件。

使用它,我有一个在 document.ready jQuery 事件中调用这些方法之一的页面。我现在正在尝试使用 QUnit 对此 js 文件进行测试,但要避免让 js 文件调用实际的 Web 服务并改用模拟服务。到目前为止,这是我的尝试:

main.js(生产代码文件)

main-test.js(测试QUnit代码,本页引用main.js)

此测试失败。LoadData 方法作为原始(main.js)document.ready 事件的一部分被调用,因此它仍然调用生产 Web 服务,并且测试失败,因为从未设置(或在生产中定义)该 GetDataCalled 变量。我做错了 asyncTest 吗?(这是我使用 QUnit 的第一天,所以我很可能是)

我可以看到这个工作的另一种方式是如果我可以覆盖 main.js document.ready 事件,但我不太确定如何做到这一点。我也不想在我的生产 main.js 代码中添加“testEnvironment == true”检查。

0 投票
3 回答
7790 浏览

jquery - 我们如何针对 DOM 操作执行单元测试?

netTuts.com 上对QUnit的介绍引发了一次有趣的交流(从未解决),讨论如何针对操作 DOM 的操作应用单元测试。以下引用(亚历克斯·约克)达到了症结所在:

如果你有这样的功能,那就太好了:

函数 add(a, b) { var 结果 = a + b; $(“input#ResultTestBox”).val(result);

在上面的测试中,我想测试两件事:a 和 b 的相加,以及正确放入 DOM 元素的结果。我很想通过提供一些模拟 HTML 来测试第二件事。可能的?

但是,就像我说的......未解决。可解决?

0 投票
2 回答
443 浏览

rake - 如何从 rake 运行我们的 qunit 测试?

我希望能够发出命令rake test:qunit并运行我们的 qunit 测试。这可能吗?可以在不打开浏览器窗口的情况下完成吗?

0 投票
2 回答
5481 浏览

javascript - Ajax 响应中的尾随空格

我正在尝试使用Qunit来测试一些代码,但是我在使用 Ajax 调用时遇到了一些问题。我什至无法通过使用 jQuery 方法的最简单的 Ajax 调用来正确测试它们。问题似乎是,无论我做什么,文本响应都会附加一个尾随空格。

我的初始代码类似于

其中ajax.txt是一个包含所有字符的文本文件foo。此测试失败,报告

Ajax 调用正常工作,预期:“foo” 结果:“foo”,差异:“foo” “foo”

然后我尝试了以下方法:

  • 我已经针对“foo”(包括尾随空格)进行了测试
  • response.replace(' ', '')在测试之前做过
  • 我改变了 ajax.txt 文件的字体编码
  • 我在 Firefox 和 Chrome 中都测试过,每次都清理缓存
  • 我已经手动测试了警报中的相等性,即使使用 == 比较

但在任何情况下我都无法得到匹配。例如,在第一个变体中,我得到了令人费解的答案

Ajax 调用正常工作,预期:“foo” 结果:“foo”,差异:“foo”

我现在有点发疯了。我可能做错了什么?

0 投票
1 回答
674 浏览

javascript - jQuery 插件:如何使用 qunit 测试插件的配置?

我在编写 jQuery 插件时尝试使用 qunit,我想知道如何测试以下内容:

这是我的 qunit 测试的简单版本:

所以我想知道如何在我的测试中从我的插件中公开内部方法/成员?

0 投票
2 回答
701 浏览

javascript - Qunit:测试泄漏

我在测试我的 jQuery 插件时遇到了泄漏问题。当我想在文字对象上模拟一个值或函数时,就会出现问题。

例子:

此测试将失败,因为第一个测试将“bar”变量添加到默认值。我用下面的代码修复了它,但是复制一个副本看起来不是很优雅。

此外,如果我在 jQuery 命名空间中有一些对象,如果我必须为每个对象获取多个副本,它可能会变得有点混乱。所以想知道是否有人有更好的解决方案来“重置”所有对象?

0 投票
3 回答
11516 浏览

javascript - Javascript 如何从数据对象中删除原型方法或使对象与 Qunit equals 一起工作

我已经开始使用 Qunit 对我的代码进行单元测试,但是在比较对象时遇到了惊人的问题。

我正在测试的代码动态创建一个对象:

这个测试失败了,我可以看到,虽然预期只包含字段 id 和 name,但 result 还包含很多函数,例如

我认为这些功能来自我将对象视为数组以便分配给它。

有没有办法去除这些功能(或首先阻止它们被添加)?

我正在考虑做

有没有更好的办法?

0 投票
2 回答
2986 浏览

javascript - 使用 qUnit 进行 Javascript 测试

我喜欢用于 JavaScript 单元测试的 qUnit,并且已经成功地将它用于几乎完全是 AJAX 的大型网络托管平台。但是,我必须在浏览器中手动运行它,或者作为 Windows 计划任务运行,这并不理想。

有没有人运行 jUnit 测试作为自动化测试套件的一部分,就像你在(比如说)perl 或 Java 中那样?

0 投票
1 回答
863 浏览

jquery - 从不同视图/页面调用时如何更改 AJAX 调用目标?

我正在使用 Qunit 测试一个 .js 脚本。

我有一个静态 .html 测试工具,其中包括 .js“被测代码”(CUT)并包含适当的标记。我正在包含的另一个脚本中使用 QUnit 进行测试。
该工具和测试脚本位于一个项目中:Application.UI.Tests.JScript.

CUT 中的 AJAX 调用具有相对于使用它的视图的位置的目标。
视图和脚本位于 MVC 项目中的常规文件夹中:Application.UI.

Application.UI.Tests.JScript执行脚本Del和内容文件夹的构建事件,XCopy以确保针对最新版本的 CUT 副本运行测试。

示例代码:

actionName 转到一个动作:

它现在只返回数据,最终将调用域层中的正确逻辑。


问题: 如何使 CUTApplication.UI从静态 .html 页面中的正在运行的项目中的控制器上调用 AJAX 操作,Application.UI.Tests.JScript而无需编辑 CUT 以包含特定于测试的信息?

0 投票
3 回答
2764 浏览

jquery - 控制 QUnit 测试顺序

我已经用 jQuery 和大量的 ajax 请求(json 格式)构建了一个网站。
我想做一些单元测试来验证服务器端的请求。
当我使用 jQuery 时,我使用 qUnit,但我有一个测试顺序的问题......

例如,我想对此进行测试: - 创建用户 => 可能
- 使用有效名称重命名用户 => 可能
- 使用已使用的名称重命名用户 => 不可能
- 删除用户 = > 有可能

我的代码:

但问题是运行 1 测试,然后运行 ​​4 和 2 和 3 ......(然后,我认为问题在于我的测试不是独立的)

怎么可能解决这个问题?
我可以在 1 中级联所有 4 个测试,但我认为它的可读性会降低......

你怎么看 ?