2014-08-27 4 views
10

Hai alcuni test di moka che richiedono dati da chiamate di funzione precedenti, ma perché utilizza un servizio web e vorrebbe letteralmente aspettare per un periodo di tempo prestabilito prima di eseguire il test successivo, qualcosa Mi piace:Prepara Mocha prima di eseguire il prossimo test

var global; 

it('should give some info', function(done) { 
    run.someMethod(param, function(err, result) { 
    global = result.global 
    done(); 
    }); 
}); 

wait(30000); // basically block it from running the next assertion 

it('should give more info', function(done) { 
    run.anotherMethod(global, function(err, result) { 
    expect(result).to.be.an('object'); 
    done(); 
    }); 
}); 

Qualsiasi idea sarebbe apprezzata. Grazie!

risposta

13

setTimeout potrebbe sicuramente aiutare, ma potrebbe esserci un modo "più pulito" per farlo. docs actually says per utilizzare this.timeout(delay) per evitare errori di timeout durante il test del codice asincrono, quindi fare attenzione.

var global; 

it('should give some info', function(done) { 
    run.someMethod(param, function(err, result) { 
    global = result.global 
    done(); 
    }); 
}); 



it('should give more info', function(done) { 
    this.timeout(30000); 

    setTimeout(function() { 
     run.anotherMethod(global, function(err, result) { 
     expect(result).to.be.an('object'); 
     done(); 
     }); 
    }, 30000); 
}); 
+0

Grazie, Flops, per ora funzionerà. Ho scritto male il mio setTimeout che ora realizzo, quando stavo testando. Grazie :) –

+1

Pensavo che la domanda riguardasse due test consecutivi che preservavano l'ordine? – Zlatko

+0

Zlatko, la domanda riguardava l'esecuzione ritardata del prossimo test nella query. questo.settimeout in questo esempio è un errore di timeout avido che il valore predefinito è 20000 in mocha se ho ragione. – Flops

7

Mentre this.timeout() estenderà il timeout di un singolo test, non è la risposta alla tua domanda. this.timeout() imposta il timeout del test corrente.

Ma non preoccuparti, dovresti comunque star bene. I test non sono eseguiti in parallelo, sono fatti in serie, quindi non dovresti avere problemi con il tuo approccio globale.

+0

In realtà, corrono in parallelo, vero? O il parallelo non è lo stesso di quello asincrono? https://mochajs.org/ – jntme

+1

Hai ragione, parallelo! == async. I test di Mocha in particolare, corrono in serie. Uno, rispetto all'altro, rispetto al prossimo ecc. – Zlatko