Jasmine - jasmine-jquery spyOnEvent

时间:2013-10-11 15:46:31

标签: javascript jquery jasmine jasmine-jquery

我正在尝试测试我创建的小部件,它通过滚动来完成一些操作。我正在使用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的异步功能,但我不确定我在等什么?

非常感谢任何帮助。感谢

1 个答案:

答案 0 :(得分:1)

所以似乎输出到scrollTop的{​​{1}}位置是由重置的灯具触发的。 console函数根本没有触发滚动事件。

我设法通过使用JQuery动画设置window.scroll动画来触发滚动事件。