【发布时间】:2013-04-30 06:50:48
【问题描述】:
我使用 jasmine 运行并等待测试异步操作。一切正常,但我不太确定幕后发生了什么。
jasmine 文档说明了以下示例,我在其中添加了三个日志语句。
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
【问题讨论】:
标签: javascript unit-testing jasmine