繁体   English   中英

摩卡咖啡等待测试setTimeout函数

[英]mocha wait before testing a setTimeout function

我有一个函数,在稍微延迟后会调用另一个函数:

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”类并删除元素。 在摩卡咖啡中,我可以模拟使用jsdom单击元素并检查'fade'类,但想等待350ms来检查'dislpayNone'类。

我能找到的所有示例都与http请求的承诺有关,但我只想暂停一下-这里有解决方案吗?

您必须向Mocha发出执行结束的信号:

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));
 });

});

这是一个快速延迟功能,您可以使用它来暂停350 ms,然后在测试中声明所需的内容。

function tryDelay(delayMs){
  var startMs = Date.now();
  var curMs = Date.now();

  while((startMs + delayMs) > curMs)
  {
    curMs = Date.now();
  }
}

tryDelay(350);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM