我有一个包装随机 jQuery 插件的 Ember 组件。
setUp: on('didInsertElement', function() {
scheduleOnce('afterRender', () => {
this.$().datetimepicker();
});
})
该插件需要大约 250 毫秒才能显示在屏幕上,这导致我编写验收测试,如下所示:
test('clicking toggles visibility', function(assert) {
let done = assert.async();
visit('/');
andThen(function() {
assert.strictEqual(find('.xdsoft_datetimepicker:visible', 'body').length, 0);
});
click('.xdsoft_datetimepicker');
setTimeout(() => {
andThen(function() {
assert.strictEqual(find('.xdsoft_datetimepicker:visible', 'body').length, 1);
done();
});
}, 500);
});
我的目标是改变组件,这样我就可以依靠click
测试助手来阻止,直到 jQuery 元素出现在屏幕上。类似的东西didInsertElement
或运行循环等待一旦元素出现在屏幕上我就可以解决的承诺将是完美的。这样的事情存在吗?