我正在尝试编写一个动态测试,看起来像这样:
let a = []
describe(`Testing`, () => {
before(() => {
a = [1,2,3,4,5]
});
it('first', (done) => {
expect(a[0]).to.equal(1);
done();
});
a.forEach(value => {
it(`should return ${ value }+1`, () => {
expect(value).to.be.eql(value);
})
});
});
第一个测试运行完全正常,a
数组在测试中是可访问的,但是当我尝试循环a
并运行测试时,a
是空的。
1条答案
按热度按时间nbewdwxp1#
这似乎是
forEach
块的定时执行的问题。它具有同步特性,因此它考虑的是在代码开始时已初始化的空数组。
jest
和任何其他测试框架都具有异步特性,这意味着它是非阻塞的。因此,代码执行将前进到下一个块,即当前具有空
a[]
数组引用的forEach
循环。在describe块中包含forEach循环将获得所需的结果。
编辑:要基于数组动态生成测试用例,您可以使用beforeEach钩子中的循环来单独定义测试用例。