我有一个功能,在稍微延迟后调用另一个:
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' class和deletes元素。 在mocha中,我可以模拟用jsdom点击元素并检查“淡出”'上课,但要等待350毫秒来检查“dislpayNone”#39;类。
我能找到的所有例子都与http请求的承诺相关,但我只想暂停 - 这里有解决方案吗?
答案 0 :(得分:2)
你必须向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));
});
});
答案 1 :(得分:0)
这是一个快速延迟功能,您可以使用它暂停350毫秒,然后在测试中断言您想要的内容。
function tryDelay(delayMs){
var startMs = Date.now();
var curMs = Date.now();
while((startMs + delayMs) > curMs)
{
curMs = Date.now();
}
}
tryDelay(350);