我一直在研究javascript测试套件,发现QUnit非常有趣。我知道如何测试计算代码,但是
如何测试主要为DOM操作编写的javascript应用程序?
测试DOM元素的位置/颜色/等等似乎是一个没有实际意义的问题,因为您最终会做这样的事情:
$(“li.my_元素”).css(“背景色”,“f00”);
然后在你的测试中
$(函数(){
模块(“着色”);
测试(“测试我的元素”,函数(){
var li_element_color=$(“li.my_element”).css('background-color');
等于(li#u元素颜色,#f00”);
});
});
这感觉不对,因为它基本上只是这样做:
var my_li=$(“li.my_元素”);
css(“背景色”,“f00”);
if(my_li.css(“背景色”)==“f00”){
返回true;
}
我疯了吗?这应该怎么做
编辑:问题的核心:
我想我的意思是,我需要确保在部署之前代码没有被破坏,但绝大多数是UI助手和ajax。如何测试事物是否正确显示
举几个例子:
- 测试jQueryUI对话框是否显示在所有其他元素的顶部
- 测试拖放是否正常工作
- 测试当一个元素被拖放到可拖放的对象上时,其颜色是否会发生变化
- 测试ajax是否工作正常
- 测试没有多余的逗号会破坏IE
我发现Javascript/DOM测试,特别是对于您描述的简单交互,没有那么有用。您将测试设置是否正确,并且由于jQuery是如此声明性,您的测试看起来非常像您的代码
我目前的想法是,如果您正在编写更大的JS组件,那么将一组相互关联的行为提取到jQuery插件和一组测试中是有意义的
但是从你提到的例子来看,听起来你真的在你的综合网站中寻找一个保护级别。像Selenium这样的工具可能更强大,更适合您。特别是
- 可以自动化
- 可以在多个浏览器上运行,包括IE
- 在web应用程序和页面的上下文中运行,因此可以在真正发生拖放的地方进行测试,而不是在某些测试环境中进行测试
- AJAX可以测试