Per le nuove versioni moka:
È ora possibile tornare una promessa di moka, moka e dovrà attendere che sia completato prima di procedere. Ad esempio, il seguente test passerà:
let a = 0;
before(() => {
return new Promise((resolve) => {
setTimeout(() => {
a = 1;
resolve();
}, 200);
});
});
it('a should be set to 1',() => {
assert(a === 1);
});
È possibile trovare la documentazione here
Per le versioni moka più vecchie:
Se volete che il vostro richiesta asincrona per essere completato prima di tutto accada , è necessario utilizzare il parametro done
nella richiesta precedente e chiamarlo nella richiamata.
Mocha attenderà quindi che venga richiamato done
per avviare l'elaborazione dei seguenti blocchi.
before(function (done) {
db.collection('user').remove({}, function (res) { done(); }); // It is now guaranteed to finish before 'it' starts.
})
it('test spec', function (done) {
// execute test
});
after(function() {});
Si dovrebbe fare attenzione però, come non spegnendo il database per unit testing può fortemente rallentare l'esecuzione, come le richieste in un database possono essere piuttosto lunga rispetto al semplice l'esecuzione di codice.
Per ulteriori informazioni, vedere Mocha documentation.
fonte
2014-07-21 09:56:30
Questo dovrebbe funzionare. Devi solo assicurarti di restituire una promessa dal tuo gestore "prima". Per esempio. 'before (function() {return db.collection ...}' – broofa