Como você envolve setTimeout em uma promessa
Estou tentando executar um conjunto de testes para um objeto que retorna uma promessa. Quero encadear várias ações juntamente com curtos tempos limite entre elas. Eu pensei que uma chamada "então" que retornasse uma promessa esperaria que a promessa fosse cumprida antes de disparar a próxima chamada em cadeia.
Eu criei uma função
function promiseTimeout (time) {
return new Promise(function(resolve,reject){
setTimeout(function(){resolve(time);},time);
});
};
para tentar envolver setTimeout em uma promessa.
Então, na minha suíte de testes, estou chamando algo assim ...
it('should restore state when browser back button is used',function(done){
r.domOK().then(function(){
xh.fire('akc-route-change','/user/4/profile/new');
}).then(promiseTimeout(2000)).then(function(t){
xu.fire('akc-route-change','/user/6');
}).then(promiseTimeout(10)).then(function(t){
expect(xu.params[0]).to.equal(6);
history.back();
}).then(promiseTimeout(10)).then(function(){
expect(xu.params[0]).to.equal(4);
done();
});
});
Eu posso colocar um ponto de interrupção no primeiroxh.fire
chamar e um segundo noxu.fire
e esperaria um intervalo de dois segundos quando a continuar do primeiro ponto de interrupção para o segundo.
Em vez disso, atinge o segundo ponto de interrupção imediatamente e o valor det
nesse ponto é indefinido.
O que estou fazendo errado?