-->

测试的Javascript操纵的DOM(Testing Javascript that Manipu

2019-08-07 01:28发布

我一直在寻找到的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

Answer 1:

我已经找到了使用Javascript / DOM的测试,特别是对于你所描述的简单交互,是没有多大用处的。 你会考验这个事情是树立正确的,由于jQuery是如此的声明,您的测试看起来很像你的代码。

我现在的想法是,如果你正在写较大的JS部件,是很有意义的一组相互关联的行为拉出两成jQuery插件和一套为它的测试。

但是,从你所提到的例子,它听起来就像你真的找你的综合网站中的保护水平。 像硒的工具可能会更强大和适合你。 特别是,它

  • 可以是自动的
  • 可以运行对多个浏览器,包括IE
  • 您的Web应用程序和页面的上下文中运行,所以拖欧米茄下降可以测试它真的发生,而不是在一些测试环境。
  • AJAX可以测试


Answer 2:

取而代之的测试JQuery的CSS功能。 您的测试应该嘲笑的CSS功能,并确保它被称为只有使用正确的颜色一次。 测试的代码应该是你,而不是框架。



Answer 3:

除了贾森什么是Harwig说,我会说,单元测试是一个测试,以确保代码正在按预期运行。 如果你想测试,然后杰森是绝对正确,你应该怎么做。 如果你想运行测试,以检查DOM操作正在发生(UI测试),而不是说是做DOM操作(单元测试)实际的代码,那么你可能想看看像硒 , 华廷或的Watir 。



Answer 4:

我猜很多人在视觉上进行测试:即他们看他们的浏览器的显示器上输出,看它是否看起来像预期的DOM被操纵。

如果需要进行自动化测试案例(如回归测试),那么也许他们记录的输出(如截屏),并做类似比较两个截图看到的结果是否相同。

而不是捕获的截图,你可以只捕获整个DOM,并做了拍摄的DOM树的侧方比较(这可能是容易出错少于比较像素)。



Answer 5:

我测试这样的AJAX的东西:

  1. 使AJAX调用
  2. 设置一个JavaScript计时器
  3. 检查DOM,看是否预期的变化已经发生

现在,它可能是你做你检查之前AJAX调用还没有回来,不过这也是有用的测试信息; 与AJAX调用,还有(通常)一段时间后,我们会称之为失败。 举个例子,如果我们做一个建议弹出,并且它采取30秒回来,这是一个失败。



文章来源: Testing Javascript that Manipulates the DOM