测试操纵DOM的Javascript

我一直在研究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可以测试

发表评论