Тест триггера Qunit вызывает бесконечный цикл обновления

Я пытаюсь написать qunit тесты для простого jQuery функция. Функция, которую я тестирую, выбирает элемент 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);
});

Тогда моя тестовая страница входит в бесконечный цикл. Кажется, что и первый, и последний тест не пройдены. Однако удаление первого теста не решает проблему.

Я думаю, что-то не так с моим третьим тестом, но не могу понять, что это такое.

1 ответ

Решение

Выяснил, что было не так. Оказывается, мой селектор, $('input'), был слишком общим: есть по крайней мере еще один элемент, который захватывается этим селектором на странице тестирования Qunit.

С использованием id формы input элемент вместо этого работал.

Другие вопросы по тегам