Javascript mocha在测试setTimeout函数之前等待
我有一个函数,在稍微延迟后调用另一个函数:Javascript mocha在测试setTimeout函数之前等待,javascript,mocha.js,jsdom,Javascript,Mocha.js,Jsdom,我有一个函数,在稍微延迟后调用另一个函数: const messageboxes = { fade: target => { target.classList.add('fade'); window.setTimeout(messageboxes.hide, 350, target); }, hide: el => { el.classList.add('displayNone'); el
const messageboxes = {
fade: target => {
target.classList.add('fade');
window.setTimeout(messageboxes.hide, 350, target);
},
hide: el => {
el.classList.add('displayNone');
el.parentNode.removeChild(el);
}
};
这将正确地添加淡入淡出类,然后在350ms后添加“displayNone”类并删除元素。
在mocha中,我可以模拟使用jsdom单击元素并检查“fade”类,但需要等待350毫秒来检查“dislpayNone”类
我能找到的所有示例都与http请求的承诺有关,但我只想暂停—这里有解决方案吗?这里有一个快速延迟函数,您可以使用它暂停350毫秒,然后在测试中声明您想要的内容
function tryDelay(delayMs){
var startMs = Date.now();
var curMs = Date.now();
while((startMs + delayMs) > curMs)
{
curMs = Date.now();
}
}
tryDelay(350);
您必须向摩卡发出执行结束的信号:
describe('setTimeout test', function(){
it('Use `done` callback', function(done){
window.setTimeout(function(){
// Assert here.
done();
}, 350);
});
it('Return promise', function(){
return new Promise((resolve, reject) => window.setTimeout(function(){
// Assert here.
resolve();
}, 350));
});
});
在setTimeout回调内发出结束信号之前。