Qnit点击触发测试导致无限刷新循环

Qunit click trigger test causes infinite refresh loop

本文关键字:无限 刷新 循环 测试 Qnit      更新时间:2023-09-26

我正试图为一个简单的jQuery函数编写一些qunit测试。我正在测试的函数选择了一个元素input,并向它添加了一个监听器(点击和按键)。侦听器隐藏另一个元素.has-error:

$('input').on('keypress click', function () {
    $('.has-error').hide();
});

我从两个测试开始:一个测试检查按键后.has-error是否不可见,另一个测试如果什么都没发生,则检查.has-error是否可见:

test("errors should be hidden on keypress", function () {
    $('input').trigger('keypress');
    equal($('.has-error').is(':visible'), false);
});
test("errors not be hidden unless there is a keypress or a click",
     function() {
    equal($('.has-error').is(':visible'), true);
});

这很好,我的测试通过了。问题开始于我尝试添加第三个测试,以检查点击input元素后.has-error是否隐藏:

test("errors should be hidden on click", function () {
    $('input').trigger('click');
    equal($('.has-error').is(':visible'), false);
});

然后我的测试页面进入了一个无限循环。看来第一次和最后一次测试都失败了。然而,删除第一个测试似乎并不能解决问题。

我想我的第三次测试有问题,但不知道是什么。

发现问题所在。事实证明,我的选择器$('input')过于笼统:在Quit的测试页面上,至少还有一个其他元素被该选择器捕获。

相反,使用表单的input元素的id起作用。