mocha的時序問題

前言

對於新手而言,mocha的時序就像謎通常,許多奇怪的測試樣例的失敗都是因爲對時序不清楚。下面我就把我在測試工做中總結的時序規則部分與你們共享。異步

describe裏地時序

simple case

jsdescribe('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包裹的部分執行順序的優先級最高code

js{block1}
describe('1',function(){
    ...
});
{block2}
describe('2',func(){..});
//執行順序block1,block2,describe1,describe2

並列的describe

規則3:同一層次的describe執行順序聽從它們的定義順序it

嵌套的describe

jsdescribe('parent',func(){
    it('1',func(){..});
    describe('child1',func(){...});
    it('2',func(){...});
    describe('child2',func(){..});
});
//執行順序爲it1,it2,child1,child2

規則4:外層describe的全部it執行優先級高於嵌套的describeio

總結

最後咱們把這四條規則總結一下function

  • describe裏地it的非異步部分按它們定義的順序執行,它們所觸發的回調的註冊順序也聽從it的註冊順序
  • 不被describe包裹的部分執行順序的優先級最高
  • 同一層次的describe執行順序聽從它們的定義順序
  • 外層describe的全部it執行優先級高於嵌套的describe
相關文章
相關標籤/搜索