Javascript Jest beforeAll在describe执行之后从API进行的提取,因此对每个提取的页面运行测试失败
我想创建jest测试,从beforeAll中的API中获取页面数据(url、组件数据和关于页面内容的所有信息),然后循环这些数据,并使用pupeteer进行测试,但由于我必须进行测试,以对获取的内容作出反应,所以我必须使用descripe。但似乎只有它()或test()在之前。小型简化示例:Javascript Jest beforeAll在describe执行之后从API进行的提取,因此对每个提取的页面运行测试失败,javascript,jestjs,Javascript,Jestjs,我想创建jest测试,从beforeAll中的API中获取页面数据(url、组件数据和关于页面内容的所有信息),然后循环这些数据,并使用pupeteer进行测试,但由于我必须进行测试,以对获取的内容作出反应,所以我必须使用descripe。但似乎只有它()或test()在之前。小型简化示例: 'use strict'; const helpers = require('./helpers'); describe('pages', () => { let livePages;
'use strict';
const helpers = require('./helpers');
describe('pages', () => {
let livePages;
beforeAll(async () => {
const { key } = await helpers.login();
const { pages } = await helpers.getPageList(key);
livePages = pages.filter(page => page.pageState === 'live');
});
test('smoke test', () => {
expect(livePages.length).not.toBe(0);
});
it('smoke test', () => {
expect(livePages.length).not.toBe(0);
});
describe('smoke test', () => {
livePages.forEach(page => {
test('locale test', () => {
expect(page.locale).toBe('de-DE');
});
});
});
});
它失败的原因是“TypeError:无法读取未定义的”的属性“forEach”,但test()和it()都通过了(测试:1次失败,2次通过,总共3次)。
是否有任何解决方法可以让我为每个获取的页面运行特定的测试?尝试为您的beforeAll(()=>{},120000)添加一个长超时。我刚刚遇到一个案例,测试正在运行,尽管我的等待从未完成。我认为框架中有某种东西允许代码继续,即使等待尚未完成。
descripe
块在before
之前执行,等等。您需要在descripe
中嵌套另一个it
或test
Descripte
是用于测试的容器,而不是测试。@很遗憾,如果我试图将一个it/test嵌套在另一个it/test中,我得到的测试将无法嵌套。测试“locale Test”无法运行,因为它嵌套在“Test”中。
是的,您不能这样做,并且您不能以您想要的方式异步创建测试。不幸的是,您必须在一次测试中测试所有活动页面。另见