mochaのタイミング問題

1544 ワード

前言


初心者にとって、mochaのタイミングは謎のようで、多くの奇妙なテストサンプルの失敗はタイミングがはっきりしていないためです.次に、テスト作業でまとめたタイミングルールの部分を皆さんと共有します.

Describeでのタイミング


simple case

describe('work',function(){
    it('1',func(){});
    it('2',func(){});
    ....
});
// 1,2,3... 

ルール1:describeのitの非非同期部分は、それらが定義した順序で実行され、それらがトリガーしたコールバックの登録順序もitの登録順序に従う.

hooks

  • before
  • after
  • beforeEach
  • afterEachこれは比較的よく使われるhooksで、私たちはhooksを採用してdescribeでのタイミングを変えることができますが、hooksはdescribeに基づいて、describeと結びついていることを覚えておいてください.hooksはサブdescribeには役に立たない.

  • describe間のタイミング


    非describe部分


    ルール2:describeに包まれていない部分の実行順序の優先度が最も高い
    {block1}
    describe('1',function(){
        ...
    });
    {block2}
    describe('2',func(){..});
    // block1,block2,describe1,describe2
    

    並列describe


    ルール3:同じ階層のdescribe実行順序が定義された順序に従う

    ネストされたdescribe

    describe('parent',func(){
        it('1',func(){..});
        describe('child1',func(){...});
        it('2',func(){...});
        describe('child2',func(){..});
    });
    // it1,it2,child1,child2
    

    ルール4:外層describeのすべてのit実行優先度がネストされたdescribeより高い

    まとめ


    最後にこの4つのルールをまとめてみましょう
  • describeのitの非非非同期部分は、それらが定義する順序で実行され、それらがトリガーするコールバックの登録順序もitの登録順序
  • に従う.
  • describeに包まれない部分実行順序の優先度は最大
  • である.
  • 同じ階層のdescribe実行順序は、それらの定義順序
  • に従う.
  • 外層describeのすべてのit実行優先度は、ネストされたdescribe
  • より高い.