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
即可。
我正在尝试为一个简单的 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
即可。