Jasmine创建依赖于变量列表大小的规范

时间:2017-09-05 09:50:40

标签: angularjs jasmine protractor gulp-protractor

我有一个beforeAll函数,它进入我的网页并根据页面中的元素填充列表。这些元素的数量取决于用户在UI中执行的操作。

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。该列表在未填充的情况下使用。

关于如何更好地解决这个问题的任何想法?

提前致谢!

1 个答案:

答案 0 :(得分:0)

在Jasmine中,发生在beforeEach(),beforeAll(),afterAll()或it()函数内的代码仅在测试实际运行时执行。所有其他代码(包括describe()函数)在测试运行器启动时发生。我建议在单个异步测试中完成所有工作:

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

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