2017-09-05 40 views
1

我有一個beforeAll函數,它會轉到我的網頁並根據頁面中的元素填充列表。這些元素的數量取決於用戶在UI中執行的操作。Jasmine創建依賴於變量列表大小的規格

let variableList = [] 

beforeAll(() => {populate a list with elements found in the page} 

然後,我想做我的列表中的所有元素相同的測試,我不想寫每個元素的規範(這些元素可能會改變,其一個很長的列表)。

我不想在一個獨特的規範中使用該列表,因爲運行該規範需要太長的時間。我寧願爲我的列表中的每個組件提供一個規範。

variableList.map(element => { 
    it('should run a spec for each list element', function(()=>{ 
    //Using element to perform the tests 

    }) 
}) 

運行此代碼時,beforeAll函數不會填充variableList。該列表使用時沒有被填充。

任何想法,我怎麼能有一個更好的方法呢?

在此先感謝!

回答

0

在Jasmine中,beforeEach(),afterEach(),beforeAll(),afterAll()或it()函數內部的代碼僅在測試實際運行時執行。所有其他代碼(包括describe()函數)都會在測試運行器啓動時發生。我建議在單個異步測試中做所有的工作:

it("tests all the elements", done => { 
    getElementFromOtherPage().then(elements => { 
     element.forEach(runTestOnElement); 
     done(); 
    }); 
}); 

不是很優雅,但應該正常工作。