1

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

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

提前致谢!

4

1 回答 1

0

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

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

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

于 2017-09-06T20:31:03.623 回答