2012-09-01 65 views
1

我想寫使用茉莉一些測試用例(第一次)運行的代碼我的茉莉花測試

describe("Widget App core logic", function() { 
    WAPP.widgets = []; 

addwidget將在我的WAPP.widgets陣列

添加窗口小部件
WAPP.addWidget('testRecord', 'testRecordContent'); 
    it("added", function() { 
     expect(WAPP.widgets.length).toEqual(1); 
    }); 

刪除插件將刪除一個widget

WAPP.removeWidget('1'); 
    it("record removed correctly", function() { 
     expect(WAPP.widgets.length).toEqual(0); 
    })  

編寫第二個規範後,我的第一個規範失敗,因爲它顯示WAPP .widgets是空的。即使在第一次規格時有一個值WAPP .widgets

+0

你的代碼有同步保證嗎?茉莉花文檔對此有何評論?你的完整代碼是什麼?這兩個'it'調用在描述函數中? – davidbuzatto

+0

不刪除並添加它調用是在不同的描述 –

+0

因此,嘗試使用它們在相同的描述。它似乎應該以這種方式使用(我看到了文檔)。 – davidbuzatto

回答

4

這裏的問題是你不應該有it以外的測試代碼。執行所有測試用例之前,it以外的代碼運行一次。你的情況可能發生的是你在測試開始之前刪除所有的小部件。

這是你的測試代碼應該是這樣的:

describe("Widget App core logic", function() { 
    beforeEach(function() { 
    WAPP.widgets = []; 
    }); 

    it("added", function() { 
    WAPP.addWidget('testRecord', 'testRecordContent'); 
    expect(WAPP.widgets.length).toEqual(1); 
    }); 

    it("record removed correctly", function() { 
    WAPP.addWidget('1', '1'); 
    WAPP.removeWidget('1'); 
    expect(WAPP.widgets.length).toEqual(0); 
    })  

}); 

請注意,您的測試代碼應該是自包含的,所有的初始化應it內或beforeEach來完成。

+0

感謝您節省我的晚上:) –

+0

其實這是最好的建議永遠!我無法相信我一直在玩遊戲,移動代碼和浪費我的時間在文檔中多久。突然之間,一切都按預期工作。確保一切都在'it'中 –