我在 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,但以前从未遇到过这种情况。
好的,我弄清楚了问题是什么,它与使用他们提供的固定元件有关。 QUnit 文档指出:
#qunit-fixture 元素可用于提供和操作测试标记,并将在每次测试后自动重置
通过重置,它们意味着它将被“清空”,而不会重置您可能添加到其中的任何其他属性。查看我的问题,您可以看到我将插件直接应用到夹具,并且所有添加的属性都在下一个测试中徘徊,导致这些问题。
在每次测试之前,我现在将一个新元素插入到夹具中并使用插件定位该元素:
$('#qunit-fixture').append('<div id="target"></div>');
$('#target').plugin();
每次测试后,这个添加的元素都会被正确清除。虽然现在这看起来很明显,但我从文档中并不能立即清楚地了解这一点。
UPDATE:
更改已于 2012 年 2 月 14 日提交并拉入 QUnit:https://github.com/jquery/qunit/pull/195 https://github.com/jquery/qunit/pull/195
谢谢,约恩
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)