我需要为qUnit测试套件提供许多不同的整页DOM样本

Ned*_*der 9 jquery dom qunit test-suite

我有少量的Javascript要测试,但它可以在整个页面上运行,例如,通过编号ID"#t34"查找元素.我需要创建一些不同的页面来测试不同的可能配置.我看到我可以使用qunit-fixture为要访问的测试创建一个DOM树,但每个页面配置都需要是一个完整的页面,因为它将按id找到元素.

各种qUnit教程似乎专注于执行简单算术的纯Javascript函数的简单示例.我需要帮助了解如何使用许多不同的文件构建一个真正的测试套件.

更新了更多详细信息:我是coverage代码覆盖工具coverage.py的所有者.它会生成HTML报告.这些报告上有jQuery,可以添加一些交互性.我正在添加更多,并希望自动化测试.HTML看起来像这样.没有涉及服务器,这些只是写入本地目录的文件,因此没有机会使用ajax.我想针对许多不同的页面配置运行我的测试,主要是针对红色和绿色代码块的边缘情况.

因为我的代码按编号访问源代码行$("#t123")(例如),所以在同一个DOM中我不能有多个HTML的"页面",因为ID会发生冲突.如何针对不同的HTML页面运行qUnit?

Jör*_*rer 5

#qunit-fixture由QUnit自动重置,这意味着您可以使用每个测试使用的标记填充它,或者将其留空并让每个测试填充它以利用自动休息.或者只使用每次测试后单独重置的标记.

您可以使用模块方法重构每次测试设置和拆解:http://docs.jquery.com/QUnit/module

在这种情况下,听起来好的选择是为每个测试使用(同步)ajax请求,将所需的页面标记加载到#qunit-fixture元素中.这样你只需要自定义设置,因为QUnit会在之后重置.

即使您只处理文件系统中的本地文件,只要它们与testsuite文件位于同一目录中,您就应该能够通过ajax加载它们.

如果没有,它很容易让本地服务器运行,例如通过该目录中的"打开http:// localhost:8080 / && python -m SimpleHTTPServer 8080".


dav*_*ing 1

为了测试整个页面和 DOM,我会使用像 Selenium http://seleniumhq.org/这样的东西 ,因为你对 JS 测试有一定的熟悉,你也可以考虑http://www.phantomjs.org/http://僵尸.labnotes.org/

有了这些,您基本上可以使用 Node.js 服务器来加载页面,您可以通过 Node.js 命令行或通过脚本完全访问 DOM。可以把它想象成命令行上的 firebug 脚本(或者,firebug 插件也可以做同样的事情)。您可以执行断言来查看您的 id'ed 元素是否存在,并切换单击元素等。

(顺便说一句,我也在 bocoup :D)