混淆了嵌套测试套件和规范的执行顺序
confuse about the execution order of nested testing suite and specs
全部:
我刚开始关于Jasmine的第二天研究,有一个关于exe顺序的问题我想弄清楚:
这个例子来自Jasmine 2.0简介:Jasmine 2.0简介
describe("Asynchronous specs", function() {
var value;
beforeEach(function(done) {
setTimeout(function() {
value = 0;
done();
}, 1);
});
it("should support async execution of test preparation and expectations", function(done) {
value++;
expect(value).toBeGreaterThan(0);
done();
});
describe("long asynchronous specs", function() {
var originalTimeout;
beforeEach(function() {
originalTimeout = jasmine.DEFAULT_TIMEOUT_INTERVAL;
jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000;
});
it("takes a long time", function(done) {
setTimeout(function() {
done();
}, 9000);
});
afterEach(function() {
jasmine.DEFAULT_TIMEOUT_INTERVAL = originalTimeout;
});
});
});
我试着阅读来源,但这只会让我更加困惑,我甚至混淆了我不理解的部分。。。。ToT
有人能简单地解释一下茉莉花在相遇时会做什么吗?之前描述过每个人和它,以及它是如何运行的?
感谢
describe
就像一个"测试范围",它用于确定必须在哪个it
上执行beforeAll、afterAll、beforeEach和afterEach,它也可以简单地用于对测试进行分类,因为它有点像一个有标题的"章节"。
在第一describe
(以及describe
子代(中的每个it
之前执行第一beforeEach
。
第一个it
可以在没有done参数的情况下写入,因为它只包含同步操作。
然后,"子"describe
中的beforeEach
在内部的每个测试用例之前执行,然后是内部的it
,最后是afterEach
,仅在子describe
中的每个it
之后执行。
总之,在您的示例中,函数按以下顺序执行:
beforeEach1 > it1 > beforeEach1 > beforeEach2 > it2 > afterEach
当您传递done参数时,jasmine"等待"它的执行,以继续进行下一个测试用例(it
(。正如您在上一个案例中看到的,jasmine必须等待9000ms才能执行done()
:默认情况下,jasmin在5000ms之后超时,这就是为什么我们将其更改为10000。
我希望它是清楚的,如果还不够,请随时询问详细信息:(
相关文章:
- javascript函数和代码隐藏函数的执行顺序
- Node.js:多个然后'It’执行顺序不正确
- 不同'单击'不同脚本中的回调:我可以控制执行顺序吗
- 代码混淆的执行顺序
- Javascript执行顺序错误
- Javascript执行顺序和回调
- 奇怪的javascript代码执行顺序
- for 循环/递归中的执行顺序
- JavaScript 中的执行顺序问题
- 来自函数 Javascript 的 NaN 返回值 ||函数执行顺序
- 控制承诺执行顺序
- 我可以信任 JavaScript 中声明中的执行顺序吗?
- 使用webcomponenetsjs的HTMLImports以意外的执行顺序加载导入-firefox
- 确保执行顺序:javascript
- Javascript代码的执行顺序
- 保证HTML表单提交和jQuery onclick的执行顺序
- 在ASP.Net中运行javascript时的执行顺序
- jQuery函数执行顺序
- Javascript中绑定到事件的函数的执行顺序
- 淘汰js可观察扩展的执行顺序是什么