我在 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");
});
当它运行时,或者当我刷新浏览器时,它会交替地使此测试失败并显示计数 = 0,或者通过此测试并使之前的所有测试失败。在测试之外没有定义全局变量。如果我手动将 count 设置为 96,一切都会通过,或者如果我删除此测试或所有先前的测试,一切也会通过。我想知道是否有人遇到过这种行为?我经常使用 QUnit,之前从未遇到过这种情况。
最佳答案
好的,我弄清楚了问题所在,这与使用他们提供的夹具元素有关。 QUnit 文档指出:
The #qunit-fixture element can be used to provide and manipulate test markup, and will be automatically reset after each test
通过重置,它们意味着它只会被“清空”,不会重置您可能已添加到其中的任何其他属性。查看我的问题,您可以看到我将插件直接应用于夹具,并且所有添加的属性都在下一次测试中徘徊,导致这些问题。
在每次测试之前,我现在将一个新元素插入夹具并使用插件定位它:
$('#qunit-fixture').append('<div id="target"></div>');
$('#target').plugin();
这个添加的元素在每次测试后都会被正确清除。虽然现在这看起来很明显,但我并没有立即从文档中弄清楚。
更新:
2012 年 2 月 14 日提交并拉入 QUnit 的更改:https://github.com/jquery/qunit/pull/195
谢谢,乔恩
关于javascript - QUnit 奇怪的夹具行为,测试交替失败和通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8393285/