Что на самом деле делает Жасмин и ждет?
Я использую жасминовые прогоны и жду, чтобы проверить асинхронные операции. Все отлично работает но яЯ не совсем уверен, что происходит за кулисами.
В документации по жасмину приведен следующий пример, к которому я добавил три оператора журнала.
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);
});
});
});
});
Первыйruns
а такжеwaitsFor
совершенно ясно для меня.Runs
запускает асинхронную операцию иwaitsFor
ждет условия.
Однако я не понимаю, почему второйruns
не начинается, покаwaitsFor
закончен.waitsFor
это не блокирующий вызов.
Я предполагаю, чтоwaitsFor
неявно блокирует любое следующееruns
звоните, пока не закончите. Это так?
Мое доказательство состоит в том, что операторы console.log выводят:
B A C
Но еслиwaitsFor
будет действительно заблокировать это должно быть
A B C