我一直在寻找到的JavaScript测试套件,我发现QUnit是非常有趣的。 我明白如何测试计算代码,但...
你怎么测试主要是为DOM操作的JavaScript应用程序?
好像测试DOM元素的位置/颜色/等将是一个有争议的问题,因为你最终做somethign这样的:
$("li.my_element").css("background-color", "#f00");
然后在您的测试...
$(function() {
module("coloring");
test("test_my_element", function() {
var li_element_color = $("li.my_element").css('background-color');
equals(li_element_color, "#f00");
});
});
这只是感觉不对,因为它基本上只是这样做:
var my_li= $("li.my_element");
my_li.css("background-color", "#f00");
if ( my_li.css("background-color") == "#f00" ) {
return true;
}
难道我疯了吗? 这应该是怎样做?
编辑 :问题的心脏:
我想我得到的是,我需要确保我在部署之前的代码没有打破,但绝大多数是UI辅助和Ajax。 如何测试,事情是正确显示?
举几个例子:
- 测试一个jQuery UI对话框出现在所有其他元素之上
- 测试拖欧米茄下降是否正常工作
- 测试的可投放的颜色改变,当元件被在其上滴加
- 测试了Ajax是所有工作正常
- 测试有没有多余的逗号,这将打破IE
我已经找到了使用Javascript / DOM的测试,特别是对于你所描述的简单交互,是没有多大用处的。 你会考验这个事情是树立正确的,由于jQuery是如此的声明,您的测试看起来很像你的代码。
我现在的想法是,如果你正在写较大的JS部件,是很有意义的一组相互关联的行为拉出两成jQuery插件和一套为它的测试。
但是,从你所提到的例子,它听起来就像你真的找你的综合网站中的保护水平。 像硒的工具可能会更强大和适合你。 特别是,它
- 可以是自动的
- 可以运行对多个浏览器,包括IE
- 您的Web应用程序和页面的上下文中运行,所以拖欧米茄下降可以测试它真的发生,而不是在一些测试环境。
- AJAX可以测试
取而代之的测试JQuery的CSS功能。 您的测试应该嘲笑的CSS功能,并确保它被称为只有使用正确的颜色一次。 测试的代码应该是你,而不是框架。
除了贾森什么是Harwig说,我会说,单元测试是一个测试,以确保代码正在按预期运行。 如果你想测试,然后杰森是绝对正确,你应该怎么做。 如果你想运行测试,以检查DOM操作正在发生(UI测试),而不是说是做DOM操作(单元测试)实际的代码,那么你可能想看看像硒 , 华廷或的Watir 。
我猜很多人在视觉上进行测试:即他们看他们的浏览器的显示器上输出,看它是否看起来像预期的DOM被操纵。
如果需要进行自动化测试案例(如回归测试),那么也许他们记录的输出(如截屏),并做类似比较两个截图看到的结果是否相同。
而不是捕获的截图,你可以只捕获整个DOM,并做了拍摄的DOM树的侧方比较(这可能是容易出错少于比较像素)。
我测试这样的AJAX的东西:
- 使AJAX调用
- 设置一个JavaScript计时器
- 检查DOM,看是否预期的变化已经发生
现在,它可能是你做你检查之前AJAX调用还没有回来,不过这也是有用的测试信息; 与AJAX调用,还有(通常)一段时间后,我们会称之为失败。 举个例子,如果我们做一个建议弹出,并且它采取30秒回来,这是一个失败。