Я использую жасминовые прогоны и жду, чтобы проверить асинхронные операции. Все работает отлично, но я не совсем уверен, что происходит за кулисами.Что жасмин работает и ждет? На самом деле?
В документации по жасмину указан следующий пример, к которому я добавил три оператора журнала.
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 заявления выход:
BAC
Но если waitsFor
действительно блокировать это должно быть
ABC
Я совершенно уверен, что это не так. Вы устанавливаете оператор между 'waitsFor' и вторым' run', он будет выполнен перед кодом в 'waitsFor', я обновлю свой вопрос, чтобы это отразить. –
Но спасибо за ссылку на документацию, я этого не знал :) –
И еще раз спасибо, ответ в документах, но не совсем там, где вы указали :) –