2013-10-11 4 views
3

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

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

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 

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

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

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

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

ответ

1

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

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

Смежные вопросы