如何在验收测试中触发滚动事件

ExD*_*ExD 5 ember.js ember-cli

我需要触发窗口滚动事件来测试无限滚动,我尝试使用triggerEvent,但似乎我错过了一些东西并且它不起作用。我正在使用 Ember 2.0,如果重要的话,列表会在组件内部呈现。最后 2 个断言的测试失败,触发事件后滚动位置不会改变

test 'loads more items when scrolling', (assert) ->
  visit '/locations/1'   
  andThen ->
    assert.equal(find('.items-list li').length, 30)

    find(window).scrollTop(10000)
    triggerEvent(window, 'scroll')

    andThen ->
      assert.ok(find(window).scrollTop() > 0, 'window should scroll')
      assert.ok(find('.items-list li').length > 30, 'should load more items after reaching threshold')
Run Code Online (Sandbox Code Playgroud)

有没有人在他们的测试中成功触发滚动事件?

Wil*_*ckl 1

我终于可以让它工作了!用于#ember-testing-container代替窗口。

下面的代码对我有用:

andThen(() => {
  Ember.$('#ember-testing-container').scrollTop(10000);
});

triggerEvent(Ember.$('#ember-testing-container'), 'scroll');

andThen(() => {
  assert.ok(Ember.$('#ember-testing-container').scrollTop() > 0, 'window should scroll')
});
Run Code Online (Sandbox Code Playgroud)

ember-infinity在开始测试之前,您还需要向下滚动正文:

Ember.$('body').scrollTop(2000);
Run Code Online (Sandbox Code Playgroud)