Jasmine中describe块代码与it块代码及拆装与卸载的执行顺序

本文详细解析了Jasmine测试框架的执行顺序,包括beforeAll、beforeEach、it、afterEach和afterAll等方法的调用流程,并通过示例帮助读者更好地理解和掌握。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看了书上的那个例子,其实仔细去理解之后发现很简单的。
我的方法就是将所有的describe块都拆开,拆为it块,beforeAll,beforeEach,afterAll,afterEach,内部的describe块以及其他(console.log等),
首先执行的是:其他,不管是外部describe中的其他还是内部describe块中的其他,总之先将其他全部执行,顺序是从上往下。
第二步:找出it块,以it为中心,从外往内找beforeAll,beforeEach,先执行beforeAll,再执行beforeEach,且一个describe中的beforeAll只执行一遍,只有第一个it块执行前会先执行beforeAll,而其他的it块不会有该步骤;而beforeEach则是每个it块执行前都会先执行beforeEach。
第三步:执行it块中代码;
第四步:以it为中心,从内往外执行afterEach和afterAll,先执行afterEach再执行afterAll,执行顺序与beforeAll及beforeEach相反,这里需要注意的是,beforeAll只在该describe块中的最后一个it执行后才会执行,其他it块不会。
我们来举个简单的例子

describe("Jasmine Executoin Sequence", function() {
    beforeAll(function() {
      console.log('run beforeAll')
    });

     beforeEach(function() {
      console.log('run beforeEach')
    });

    console.log('其他');

    it("spec1", function() {
      console.log('run spec1')
    });

    it("spec2", function() {
       console.log('run spec2')
    });

     afterAll(function() {
      console.log('run afterAll')
    });

     afterEach(function() {
      console.log('run afterEach')
    });
  });

按照之前说的
1.先执行其他,也就是先输出“其他”
2.然后找第一个it块,先执行beforeAll,再执行beforeEach
3.然后执行it块
4.再运行afterEach,因为还有这个不是最后一个it,所以不执行afterAll
5.找到第二个it块,因为不是第一个it块,所以不执行befoeAll,只执行beforeEach
6.执行第二个it块
7.先执行afterEach,因为是最后一个it块,所以继续执行afterll.
运行结果应该为

其他
run beforeAll
run beforeEach
run spec1
run afterEach
run beforeEach
run spec2
run afterEach
run afterAll

当然如果有嵌套的describe也是按照一样的顺序,由外往内执行即可
下面出一个练习题,大家可以试着推导一下,加深理解
图示(有点粗糙,将就看看),解释一下图中两个describe块,都包含上面所述的函数。
这里写图片描述

上述方法为我自己总结,若有不对之处,欢迎提出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值