使用夹具进行QUnit奇怪行为,测试交替失败并通过

时间:2011-12-05 23:17:01

标签: javascript jquery qunit

我在QUnit中设置了以下内容:

/* Dozen or so previous tests here */

test("Test some markup generation", function () {

    $('#qunit-fixture').plugin(); // jQuery plugin: Generates a table

    var rows = $('#qunit-fixture table tbody tr');
    count = rows.length;  // Count the rows
    console.log(count);

    equal(count, "96", "Expect the number of rows to be 96");
});

当它运行时,或者当我刷新浏览器时,它交替地使这个测试显示count = 0,或者通过它并且失败所有先前的测试。测试之外没有定义全局变量。如果我手动将计数设置为96,一切都很顺利,或者如果我删除了这个测试,或者所有以前的测试,一切都会通过。我想知道是否有人遇到过这种行为?我之前使用过QUnit并且之前没有遇到过这种情况。

1 个答案:

答案 0 :(得分:8)

好的,我弄清楚问题是什么,它与使用他们提供的fixture元素有关。 QUnit文档说明:

  

#qunit-fixture元素可用于提供和操作测试标记,并在每次测试后自动重置

通过重置它们意味着它将被“清空”,没有任何其他属性可能会被重置。看看我的问题,你可以看到我正在将插件直接应用到灯具中,并且所有添加的属性都会在下一次测试中出现,导致这些问题。

在每次测试之前,我现在将一个新元素插入到fixture中并使用插件定位:

$('#qunit-fixture').append('<div id="target"></div>');
$('#target').plugin();

然后在每次测试后正确清除此添加的元素。虽然这看起来很明显,但我从文档中并不是很清楚。

<强>更新

提交更改并于2012年2月14日进入QUnit:https://github.com/jquery/qunit/pull/195

谢谢,Jörn