QUnit для тестирования javascript на события - PullRequest
1 голос
/ 12 марта 2012

Я действительно новичок в тестировании javascript.Я могу проверить все остальные функции Qunit.Но не смог понять, как использовать qunit для проверки функциональности обработчика событий.Я попробовал следующее после просмотра примера в наборе тестов jquery event.js для функций триггера, связывания и делегирования.

test('Event Handling', function () {
    var hai = function() {
            console.log('Clicked');
        ok(true, 'click event triggered');
    };
    eventLib.addEvent(document.getElementById('qunit-header'), 'click', hai);
    $('#qunit-header').trigger('click');
    ok(true, 'It happend');
});

Здесь eventLib - это функция, которую я написал для присоединения и отсоединения событий.Но приведенный выше код, по-видимому, не дает никакого вывода на интерфейсе qunit html [за исключением случаев, когда это происходит].Но если я вручную нажму на заголовок, обработчик событий войдет в консоль.Я использую jquery v1.6.2

1 Ответ

6 голосов
/ 12 марта 2012

Кажется, .trigger только запускает события, связанные через jQuery, а не другим способом.В Chrome это только журналы jquery: http://jsfiddle.net/LYxD4/.

$("#x").get(0)
       .addEventListener("click", console.log.bind(console, "native"),
                         false);

$("#x").on("click", console.log.bind(console, "jquery"));

$("#x").trigger("click");​

Вы можете использовать .dispatchEvent вместо: http://jsfiddle.net/LYxD4/1/.

var event = document.createEvent("HTMLEvents");
event.initEvent("click", true, true);

$(...).get(0).dispatchEvent(event);​
...