如何在多个文件中运行 Jest-Puppeteer 测试

Posted

技术标签:

【中文标题】如何在多个文件中运行 Jest-Puppeteer 测试【英文标题】:How to run Jest-Puppeteer test in multiple files 【发布时间】:2018-12-28 16:44:31 【问题描述】:

我正在使用 jest-puppeteer 来运行我的网络测试。如果我在一个文件中运行所有定义的测试,则一切正常。

describe('user', () => 

    jest.setTimeout(12000);

    beforeEach(async () => 
        await page.setViewport(width: 1200, height: 2000);
        await page.goTo('http://localhost:3000');
    );

    it('test 1', async () => 
        //my test steps
    );

    it('test 2', async () => 
        //my test steps
    );

);

但是,如果我在自己的文件中运行每个测试,则会收到错误消息。

UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'addExpectationResult' of undefined

文件 1

describe('user', () => 

    jest.setTimeout(12000);

    beforeEach(async () => 
        await page.setViewport(width: 1200, height: 2000);
        await page.goTo('http://localhost:3000');
    );

    it('test 1', async () => 
        //my test steps
    );

);

文件 2

describe('user', () => 

    jest.setTimeout(12000);

    beforeEach(async () => 
        await page.setViewport(width: 1200, height: 2000);
        await page.goTo('http://localhost:3000');
    );

    it('test 2', async () => 
        //my test steps
    );

);

有趣的是,如果我在 test2 中添加一个 console.log('some statement') 作为第一步,一切都会再次运行。这就是为什么我认为这可能是一个时间问题。我按顺序运行测试,即jest --runInBand

谁能帮忙?

【问题讨论】:

【参考方案1】:

正如你所说,我同意问题在于顺序异步,正如 Patrick Hulce 回答中的that github bugreport 中所述:

FWIW 我也遇到了这个问题并导致了这个问题。只发生在 异步测试超时但基础操作继续时的 CI 直到测试套件完成之后(我猜是回调 试图添加期望的结果)。我永远无法做到 虽然发生在本地。

所以您的错误可能在“//我的测试步骤”中,您在测试中操作了一些您可以/需要在运行异步进程之前操作的东西。

【讨论】:

以上是关于如何在多个文件中运行 Jest-Puppeteer 测试的主要内容,如果未能解决你的问题,请参考以下文章

如何在RSpec中使用终端的单一命令运行多个规格文件?

如何在 Shell 脚本中运行多个 SQL 脚本文件

如何在一个 .BAT 文件中运行多个 .BAT 文件

如何在flutter中使用一个配置文件运行多个测试文件而不发出长终端命令?

如何使此代码在单个文件夹中运行多个图像?

请教 如何运行含多个cpp的一个c++项目里面的一个cpp