Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用夹具检查奇怪的行为,测试交替失败和通过_Javascript_Jquery_Qunit - Fatal编程技术网

Javascript 用夹具检查奇怪的行为,测试交替失败和通过

Javascript 用夹具检查奇怪的行为,测试交替失败和通过,javascript,jquery,qunit,Javascript,Jquery,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;

我在昆特设立了以下机构:

/* 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,或者通过此测试并失败之前的所有测试。在测试之外没有定义全局变量。如果我手动将count设置为96,则所有测试都可以通过,或者如果我删除此测试或之前的所有测试,则所有测试都可以通过。我想知道是否有人遇到过这种行为?我经常使用QUnit,以前从未遇到过这种情况。

好的,我发现了问题所在,它与使用他们提供的fixture元素有关。QUnit文件规定:

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

重置意味着它将被清空,没有任何附加属性,您可能已经添加到它被重置。看看我的问题,你可以看到我将插件直接应用到夹具上,所有添加的属性都挂在了下一个测试上,导致了这些问题

在每次测试之前,我现在在夹具中插入一个新元素,并使用插件将其作为目标:

$('#qunit-fixture').append('<div id="target"></div>');
$('#target').plugin();
每次测试后,此添加的元素将被正确清除。虽然这一点现在看起来很明显,但从文档中我并不清楚

更新:

已于2012年2月14日提交并纳入QUnit的变更:


谢谢,Jörn

我不确定这是否是原因,但在这里将count声明为局部变量至少会更干净。可能它与qunit使用的其他变量冲突。请参阅源代码,其中使用了大量引用进行计数,并检查是否存在冲突:还有一个“功能”,允许您单击测试报告中的一个测试,以仅选择该测试运行。我花了半个小时才弄明白为什么我只有一次测试-表是否可能尚未完成生成?插件中有回调功能吗?@这是一个很好的建议,但即使在本地声明或命名以避免冲突,也无法解决问题。更改已提交并撤回,但已于2012年2月29日恢复。这意味着上述不将插件和属性附加到qunit装置本身的解决方案仍然是必要的。