gpt4 book ai didi

jquery - Ember 验收测试 andThen() 不会等到滚动事件完成

转载 作者:行者123 更新时间:2023-11-28 20:20:02 25 4
gpt4 key购买 nike

我需要一个 emberJs 验收测试,以便能够滚动到页面中的某个点,然后才对页面断言。

这两个功能,

Ember.$('body').scrollTop(1000);

window.scroll(0,1000);

当后面跟着一个

andThen(()=>{
console.log('body', Ember.$('body').scrollTop());
})

打印出 body scrollTop 位置在 108。我需要它在 1000。

到目前为止,我能到达 body scrollTop 为 1000 的唯一方法是使用此回调:

Ember.$('body').animate({scrollTop: 1000}, () => {
console.log('body', Ember.$('body').scrollTop());
staticWiz.assertHasGoToTopButton(true);
});

这里的问题是在这个回调发生的时候没有任何测试内容存在。我不能断言什么。

如果我尝试将 assert.async() 和 done() 与此回调一起使用,它会在 body scrollTop() 为 108 时过早触发:

const done = assert.async();
Ember.$('body').animate({scrollTop: 1000}, () => {
console.log('body', Ember.$('body').scrollTop());
staticWiz.assertHasGoToTopButton(true);
done();
});

如果我设置循环超时作为检查滚动位置的一种方式,它只会永远停留在 108 的相同位置。

const done = assert.async();
window.scroll(0, 1000);
const checkScroll = () => {
console.log('body', Ember.$('body').scrollTop());
if (Ember.$('body').scrollTop() === 1000) {
staticWiz.assertHasGoToTopButton(true);
done();
return;
}
setTimeout(checkScroll, 1000);
};
checkScroll();

所以。有任何想法吗?有没有人以前为他们做过这个工作,在这种情况下,您不能只进行任何程度的滚动,而是需要一个特定的数字进行 Emberjs 验收测试?

更新:同事刚刚意识到测试页面正文正在被测试滚动,而不是测试页面内的嵌套应用程序正文。我们应用程序中的“正文”滚动观察器不会在测试页面的应用程序窗口内拾取滚动条。不确定从那里去哪里。

最佳答案

完成这项工作的一种方法是使用 Ember 中的低级 waiter 功能。

参见:http://emberjs.com/api/classes/Ember.Test.html#method_registerWaiter

基本上,您将如何使用它:

function finishedScrolling() {
return Ember.$('body').scrollTop() === 1000;
}

Ember.Test.registerWaiter(finishedScrolling);

Ember.$('body').animate({scrollTop: 1000});

andThen(function() {
Ember.Test.unregisterWaiter(finishedScrolling);
staticWiz.assertHasGoToTopButton(true);
});

在这里查看它的工作情况:https://ember-twiddle.com/1407bbadbb13365181f91201de6ba46c?openFiles=tests.acceptance.my-acceptance-test.js%2C

关于jquery - Ember 验收测试 andThen() 不会等到滚动事件完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41250385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com