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

Qunit click trigger test causes infinite refresh loop

我正在尝试为一个简单的 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);
});

一切正常,我的测试通过了。当我尝试添加第三个测试时,问题开始了,以检查 .has-error 在单击 input 元素后是否被隐藏:

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

然后我的测试页面进入死循环。似乎第一个和最后一个测试都失败了。但是,删除第一个测试似乎并不能解决问题。

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

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

改用表单的 input 元素的 id 即可。