Жасмин — жасмин-jquery spyOnEvent

Я пытаюсь протестировать созданный мной виджет, который кое-что делает с прокруткой. Я использую Jasmine и jasmine-jquery для тестирования, но получаю странные результаты.

Я хочу проверить, что мой виджет успешно запускает событие, когда страница прокручивается определенным образом. Я упростил здесь все на случай, если проблема вызвана моим виджетом, поэтому я просто пытаюсь проверить, было ли запущено событие прокрутки в окне.

it("should trigger scrollEvent on the window", function(){
    loadFixtures('lorem-ipsum.html'); //gives some height to the page
    window.scrollTo(0,0);
    console.log($(window).scrollTop()); //Should return 0

    $(window).bind("scroll", function (e) {
        console.log("Now scrolling");
    });
    window.scroll(0,100);
    console.log($(window).scrollTop()); //Should return 100
    window.scroll(0,50);
    console.log($(window).scrollTop()); //Should return 50

    expect('scroll').toHaveBeenTriggeredOn(window);
});

В консоли получаю следующее

Testing started at 16:32 ...
0
100
50
    Expected event scroll to have been triggered on [object Object]
    ()@C:/Projects/jquery.scrollevents/tests/specs/development.js:45


'Now scrolling'
    Expected event scroll to have been triggered on [object Object]
    Error: Expected event scroll to have been triggered on [object Object]
        at null.<anonymous> (C:/Projects/jquery.scrollevents/tests/specs/development.js:45:34)

0
100
50'Now scrolling'
Process finished with exit code 0

Я не уверен, что с этим делать, потому что порядок событий странный. Он проходит дважды? Событие прокрутки запускается только после ожидания?

Я отлаживал его в браузере, и вы видите, что происходит то же самое. Сначала сбой теста, а затем запуск событий браузера.

Я просмотрел асинхронные функции Jasmine, но не знаю, чего я жду?

Любая помощь будет принята с благодарностью. Спасибо


person moefinley    schedule 11.10.2013    source источник


Ответы (1)


Таким образом, кажется, что позиции scrollTop, выводимые на console, были вызваны сбросом приборов. Событие прокрутки вообще не запускалось функцией window.scroll.

Мне удалось запустить событие прокрутки, анимировав $("html, body").scrollTop() с помощью анимации JQuery.

person moefinley    schedule 12.10.2013