2015-05-05 51 views
12

取消註釋最後的規格。所有地獄都打破了......爲什麼?茉莉花應該按照它們的聲明順序或隨機順序執行規格嗎?

describe('test', function() { 
    var index = 1; 

    it('test 1', function() { 
    expect(index).toBe(1); 
    index++; 
    }); 

    it('test 2', function() { 
    expect(index).toBe(2); 
    index++; 
    }); 

    it('test 3', function() { 
    expect(index).toBe(3); 
    index++; 
    }); 

    it('test 4', function() { 
    expect(index).toBe(4); 
    index++; 
    }); 

    it('test 5', function() { 
    expect(index).toBe(5); 
    index++; 
    }); 

    it('test 6', function() { 
    expect(index).toBe(6); 
    index++; 
    }); 

    it('test 7', function() { 
    expect(index).toBe(7); 
    index++; 
    }); 

    it('test 8', function() { 
    expect(index).toBe(8); 
    index++; 
    }); 

    it('test 9', function() { 
    expect(index).toBe(9); 
    index++; 
    }); 

    it('test 10', function() { 
    expect(index).toBe(10); 
    index++; 
    }); 

    // it('test 11', function() { 
    // expect(index).toBe(11); 
    // index++; 
    // }); 

}); 

感謝@PWKad指出,當超過10次測試時會發生這種情況。

+1

它總是跑在我的聲明的順序。我唯一的建議是將真正的套件減少到最低限度,以顯示問題並在問題中發佈代碼。 –

+2

我對茉莉花沒有大量的經驗,但是對於一般的單元測試,你不應該指望它們以任何特定順序運行 - 畢竟它們是單元測試。如果一個特定的測試需要某些條件,那應該在該測試的設置/拆除中。 –

+0

@JamesThorpe問題是被測試的功能是有狀態的並且具有異步API。如果我不能依賴訂單規範執行,我將得到一個深層嵌套的規範,這是醜陋的,並不反映正在測試的API部分。如果有人確切知道茉莉花的「預期」行爲是什麼,我可以忍受它。到目前爲止,我的經歷與Michal Charemza相同。 –

回答

10

是的,Jasmine按順序執行規格(it)。從2.3.0到2.3.3有超過10個規格的問題。我在2.3.3中遇到了同樣的問題,問題在2.3.4中得到了解決。

https://github.com/jasmine/jasmine/issues/850

我只是用2.3.4替代2.3.3和我的15周的測試終於過去了。

4

當前(v2.x)Jasmine按照它們定義的順序運行測試。但是,有一個新的(2015年10月)選項以隨機順序運行規格,默認情況下它仍然處於關閉狀態。根據項目所有者,在Jasmine 3.x中,它將被轉換爲默認值。

參考文獻:

+0

偉大的信息 - thanks! –