Come verificare le promesse penzolanti? (Bluebird.js)

1

Mi sono imbattuto in un problema in cui ho dimenticato di risolvere la mia promessa, lasciando il resto della catena in attesa (per sempre). Fortunatamente nel mio caso sono stato in grado di rintracciare il problema in soli 10 minuti circa, ma ho potuto vedere che questo è davvero un grosso problema se non trovo un modo per controllare le catene di promesse orfane.

Come si automatizzerebbe il controllo del seguente errore?

function myAsyncFunction(){
return new Promise((resolve,reject)=>{
  //do stuff here, but forget to call resolve();
});
}
    
posta JasonS 30.01.2017 - 01:44
fonte

2 risposte

1

La maggior parte delle persone fa il check in un normale test unitario. Non è possibile testare una promessa senza testarla e risolverla assegnando un timeout appropriato all'unità sottoposta a test.

    
risposta data 30.01.2017 - 14:53
fonte
0

I test asincroni dovrebbero avere il callback done() . È responsabilità dello scrittore del test chiamarlo. Aiuta, ovviamente, a impostare un timeout ragionevole predefinito, ma fai attenzione ai server di integrazione continua lenti che potrebbero superare le aspettative troppo ottimistiche basate sulla tua workstation a 8 core più recente:)

Quindi, se ti dimentichi di restituire qualche promessa nel concatenamento, otterrai il valore di null (dovresti controllare i valori di ritorno nei test, a destra). Se dimentichi done , riceverai un'eccezione di timeout e un test fallito.

Dai un'occhiata ad es. gelsomino.

    
risposta data 30.01.2017 - 16:44
fonte

Leggi altre domande sui tag