javascript – 在jest.setTimeout指定的5000ms超时内未调用异步回调

我正在使用木偶戏和开玩笑来进行一些前端测试.

我的测试看起来如下:

describe("Profile Tab Exists and Clickable: /settings/user", () => {
    test(`Assert that you can click the profile tab`, async () => {
      await page.waitForSelector(PROFILE.TAB);
      await page.click(PROFILE.TAB);
    }, 30000);
});

有时,当我运行测试时,一切都按预期工作.其他时候,我收到一个错误:

Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

      at node_modules/jest-jasmine2/build/queue_runner.js:68:21
      at Timeout.callback [as _onTimeout] (node_modules/jsdom/lib/jsdom/browser/Window.js:633:19)

这很奇怪,因为:

>我指定超时为30000
>我是否得到此错误似乎非常随机

任何人都可以猜到为什么会这样吗?

解决方法:

因此,您在此处指定的超时需要短于默认超时.

默认超时为5000,默认情况下框架是jasmine,如果是jest.您可以通过添加来指定测试内的超时

jest.setTimeout(30000);

但这将是测试的具体内容.或者您可以为框架设置配置文件.

https://facebook.github.io/jest/docs/en/configuration.html#setuptestframeworkscriptfile-string

// jest.config.js
module.exports = {
  setupTestFrameworkScriptFile: './jest.setup.js'
}

// jest.setup.js
jest.setTimeout(30000)

也见这个帖子

https://github.com/facebook/jest/issues/5055

https://github.com/facebook/jest/issues/652

上一篇:预渲染插件prerender-spa-plugin使用总结


下一篇:javascript – 如何在puppeteer中导航dom元素?