当前位置: 首页 > 知识库问答 >
问题:

消息"在jest.setTimeout指定的5000 ms超时内未调用异步回调"

鲜于星波
2023-03-14

我正在使用木偶和笑话来运行一些前端测试。

我的测试如下:

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);
});

有时,当我运行测试时,一切都按预期进行。其他时候,我会遇到一个错误:

超时-在jest.set超时指定的5000毫秒超时内没有调用异步回调。

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

这很奇怪,因为:

>

  • 我指定超时为30000

    我是否得到这个错误似乎是非常随机的

    为什么会这样?

  • 共有3个答案

    苗承
    2023-03-14

    随着玩笑的发展,这个问题的答案也发生了变化。目前答案(2019年3月):

    >

  • 您可以通过向it添加第三个参数来覆盖任何单个测试的超时。例如,it('运行缓慢',()=

    您可以使用jest.setTimeout更改默认值。为此:

    // Configuration
    "setupFilesAfterEnv": [  // NOT setupFiles
        "./src/jest/defaultTimeout.js"
    ],
    

    // File: src/jest/defaultTimeout.js
    /* Global jest */
    jest.setTimeout(1000)
    

    正如其他人所指出的,与此没有直接关系,done对于异步/等待方法来说是不必要的。

  • 高展
    2023-03-14

    当它是测试中的异步时,它应该调用async/wait

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

    您在此指定的超时需要短于默认超时。

    默认超时为5000,如果是jest,则框架默认为jasmine。您可以通过添加

    jest.setTimeout(30000);
    

    但这将是特定于测试的。或者,您可以为框架设置配置文件

    配置笑话

    // jest.config.js
    module.exports = {
      // setupTestFrameworkScriptFile has been deprecated in
      // favor of setupFilesAfterEnv in jest 24
      setupFilesAfterEnv: ['./jest.setup.js']
    }
    
    // jest.setup.js
    jest.setTimeout(30000)
    

    另请参见以下线程:

    每次测试设置超时时间#5055

    使jasmine.DEFAULT_TIMEOUT_INTERVAL可配置

    P. S.:拼写错误的setupFilesAfterEnv(即setupFileAfterEnv)也会引发相同的错误。

     类似资料:
    • 和响应的侦听器 它不想进入侦听器中的这个句柄消息。和应用程序容器显示消息

    • 问题内容: 如何快速进行异步回调?我正在为我的应用程序编写一个小框架,因为它应该同时在iOS和OS X上运行。因此,我将非特定于设备的主要代码放入该框架中,该框架还处理对我的在线api的请求。很显然,我也希望应用程序的GUI以及ViewController在api请求完成后立即做出反应。在Objective- C中,我通过将包含必须在id变量中调用的函数以及函数本身的视图保存在选择器变量中的视图来

    • 几周前刚开始学Node.js....我不明白为什么“products”数组包含null而不是所需的对象.... 在第13行,当我对对象进行控制台日志记录时,我得到了所需的对象,但我不明白当我在map函数完成它的执行后在第40行对它们进行控制台日志记录时,它们为什么是空的.... 如果数组长度是2(这意味着推入成功),为什么里面存储的对象仍然是空的,而不是我想要存储的对象? 控制台输出 订单模式

    • 问题内容: 我对如何在Mocha测试中包装嵌套的异步回调感到困惑。这是令人讨厌的代码示例:正在调用Amazon S3以检查文件是否存在: 代码挂起等待完成(如果我省略done())-或者,代码完成而没有回调,或者,节点抱怨done()被多次调用。 在下面的帮助下,我可以正常工作了,但看起来像是异步伏都炖菜 问题答案: 尝试使用async.serial。在第一个条目内,使用async.each运行多

    • 我有一个由Java config支持的Spring MVC应用程序,我想为所有涉及Callable的异步调用设置一个默认超时 我想有一个控制器(每个应用程序)有多少时间控制器有时间做它的东西之前请求超时。 我想要一个Java配置的示例,而不是xml

    • 我已经实现了一个返回一个值或者抛出一个异常的控制器方法。 在此代码中,我只想在警告级别记录异常消息,而不是抛出异常,因为我不想看到类似以下内容: 所以如果我把 到第一个catch语句,它给出 缺少返回语句 该catch块的错误。所以,如何处理不向调用api抛出异常,只正确发送异常消息,因为方法的返回类型是dto?