javascript - QUnit 奇怪的夹具行为,测试交替失败和通过

标签 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");
});

当它运行时,或者当我刷新浏览器时,它会交替地使此测试失败并显示计数 = 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/

相关文章:

javascript - SharePoint 初始化后执行 JavaScript 函数

javascript - 匿名函数在 Javascript 中不起作用? (或者也许我只是没有得到匿名函数)

javascript - 获取/设置 map 图像鼠标位置

ember.js - ember cli 中文件上传的验收测试

javascript - 找不到我从 Typescript 构建的 javascript 类

javascript - 我如何将循环/递归与 promise 链一起使用?

javascript - React.createElement 中的第二个参数是什么?为什么它在大多数时候都是空的?

jquery - 如何在Jquery中使用触发器传递参数数据以及控制(this)

javascript - jQuery 无法将类添加到动态添加的内容

node.js - AJAX 请求的 QUnit 和 PhantomJS 测试只能通过代理进行