【问题标题】:Qunit click trigger test causes infinite refresh loopQunit 点击触发测试导致无限刷新循环
【发布时间】:2015-10-28 06:04:29
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript jquery unit-testing qunit


    【解决方案1】:

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

    使用表单的input 元素的id 代替工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2015-10-14
      • 1970-01-01
      相关资源
      最近更新 更多