Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jest beforeAll在describe执行之后从API进行的提取,因此对每个提取的页面运行测试失败_Javascript_Jestjs - Fatal编程技术网

Javascript Jest beforeAll在describe执行之后从API进行的提取,因此对每个提取的页面运行测试失败

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;

我想创建jest测试,从beforeAll中的API中获取页面数据(url、组件数据和关于页面内容的所有信息),然后循环这些数据,并使用pupeteer进行测试,但由于我必须进行测试,以对获取的内容作出反应,所以我必须使用descripe。但似乎只有它()或test()在之前。小型简化示例:

'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”中。
是的,您不能这样做,并且您不能以您想要的方式异步创建测试。不幸的是,您必须在一次测试中测试所有活动页面。另见