Uso le esecuzioni di jasmine e aspetto di testare le operazioni asincrone. Tutto funziona bene ma non sono abbastanza sicuro di cosa succede dietro le quinte.Cosa fa il gelsomino e aspetta?
La documentazione del gelsomino riporta il seguente esempio a cui ho aggiunto tre istruzioni del registro.
describe("Asynchronous specs", function() {
var value, flag;
it("should support async execution of test preparation and exepectations", function() {
runs(function() {
flag = false;
value = 0;
setTimeout(function() {
flag = true;
}, 500);
});
waitsFor(function() {
value++;
if(flag) {
console.log("A");
}
return flag;
}, "The Value should be incremented", 750);
console.log("B");
runs(function() {
console.log("C");
expect(value).toBeGreaterThan(0);
});
});
});
});
I primi runs
e waitsFor
sono perfettamente chiari per me. Runs
avvia un'operazione asincrona e waitsFor
attende una condizione.
Tuttavia, non capisco perché il secondo runs
non si avvia fino al termine del waitsFor
. waitsFor
non è una chiamata di blocco.
La mia ipotesi è che waitsFor
blocchi implicitamente qualsiasi successiva chiamata runs
finché non è terminata. È così?
La mia prova è che il bilancio d'console.log uscita:
BAC
Ma se waitsFor
sarebbe davvero bloccare dovrebbe essere
ABC
Sono abbastanza sicuro che questo non è il caso. Metti un'istruzione tra 'waitsFor' e la seconda' run' verrà eseguita prima del codice in 'waitsFor', aggiornerò la mia domanda per riflettere questo. –
Ma grazie per il link alla documentazione, non lo sapevo :) –
E grazie ancora, la risposta è nei documenti, ma non proprio dove hai indicato :) –