Тест триггера 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
элемент вместо этого работал.