2017-09-05 37 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(); 
    }); 
}); 

不是很优雅,但应该正常工作。