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回调内发出结束信号之前。